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 할 때 파일을 찾기 위해 참조하는 디렉토리 경로 목록