수색…


파일을 한 번만로드하도록 요구하십시오.

Kernel # require 메소드는 파일을 한 번만로드합니다 ( require 를 여러 번 호출하면 해당 파일의 코드가 한 번만 평가됩니다). 매개 변수가 절대 경로가 아닌 경우 루비 $LOAD_PATH 를 검색하여 필요한 파일을 찾습니다. .rb , .so , .o 또는 .dll 과 같은 확장자는 선택 사항입니다. 상대 경로는 프로세스의 현재 작업 디렉토리로 해석됩니다.

require 'awesome_print'

Kernel # require_relative를 사용하면 require_relative 가 호출 된 파일을 기준으로 파일을로드 할 수 있습니다.

# will search in directory myproj relative to current source file.
#
require_relative 'myproj/version'  

자동으로 소스 파일로드

Kernel#autoload 메소드는 모듈 (String 또는 심볼 일 수 있음)에 처음 액세스 할 때로드 할 파일 이름 ( Kernel::require )을 등록합니다.

autoload :MyModule, '/usr/local/lib/modules/my_module.rb' 

방법 커널 # autoload? name이 autoload 로 등록되면로드 할 파일 이름을 반환합니다.

autoload? :MyModule  #=> '/usr/local/lib/modules/my_module.rb'

옵션 파일로드

파일을 사용할 수없는 경우, require 가족은 발생합니다 LoadError . 이것은 선택적 모듈이있을 경우에만로드하는 예제입니다.

module TidBits

@@unavailableModules = []

[
      { name: 'CoreExtend', file: 'core_extend/lib/core_extend'  } \
    , { name: 'Fs'        , file: 'fs/lib/fs'                    } \
    , { name: 'Options'   , file: 'options/lib/options'          } \
    , { name: 'Susu'      , file: 'susu/lib/susu'                } \

].each do |lib|

    begin

        require_relative lib[ :file ]

    rescue LoadError

        @@unavailableModules.push lib

    end

end

end # module TidBits

반복적으로 파일로드

Kernel # load 메소드는 주어진 파일의 코드를 평가합니다. 검색 경로는 require 와 같이 구성됩니다. require 와 달리 이후의 모든 호출에서 해당 코드를 다시 평가 require . load_relative 는 없습니다.

load `somefile`

여러 파일로드 중

루비 기법을 사용하여로드 할 파일 목록을 동적으로 만들 수 있습니다. 알파벳 순서로로드 된 test 시작하는 파일에 대한 globbing의 그림.

Dir[ "#{ __dir__ }**/test*.rb" ) ].sort.each do |source|

    require_relative source

end


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow