1. Backgrounds
Ruby 에선 LOAD_PATH 환경 변수를 사용하여, require 할 때, 파일들을 참조한다.
- 예를 들어,
require 'example'하면, ruby는 $LOAD_PATH의 경로 중에서example.rb을 찾는다.
Ruby, Gem 등은 기본적으로 셋팅되어있으나, 프로젝트의 lib, bin 등은 포함되어 있지 않으므로, 명시적으로 추가해줘야 함.
LOAD_PATH가 아니라 현 스크립트 기준으로 다른 스크립트를 참조하고 싶다면,
require_relative '<relative_path>' 을 사용할 수 있다.
(개인적으로는 parent path로 가야되는 경우가 많아, 코드가 지저분해 보여, 비추)
Ruby 에선 LOAD_PATH 개념이 존재. LOAD_PATH를 기준으로 script 들을 가져올 수 있다. ('require keyword')
그게 아니라면 현재 기준으로 script를 가져오려면, 'require_relative keyword 사용'
2. Usage
# bin/bin_helper.rb
$LOAD_PATH.unshift FILE.expand_path('../lib', __dir__)
# spec/spec_helper.rb
$LOAD_PATH.unshift(File.expand_path('../lib', __dir__))
$LOAD_PATH.unshift(FILE.expand_path('../bin', __dir__))
보충 설명)
- File.expand_path(
, _path_) - 현 스크립트가 위치한 폴더를 기준으로 relative_path의 절대 경로를 반환
- LOAD_PATH.unshift(<item>)
- LOAD_PATH의 제일 앞에 item 을 추가하여, item부터 require 시 가장 먼저 탐색될 수 있게 한다.
- $LOAD_PATH ($:)
- Ruby 내부에서만 사용하는 배열로, require 할 때 파일을 찾기 위해 참조하는 디렉토리 경로 목록