루비는 필요한 파일을 어디에서 찾을 수 있는지 어떻게 알 수 있습니까?

StackOverflow https://stackoverflow.com/questions/417179

  •  03-07-2019
  •  | 
  •  

문제

다음은 한 가지 더 초보자 질문입니다.

require 'tasks/rails'

나는이 라인을 모든 레일 프로젝트의 루트 경로에서 rakefile로 보았다. 이 라인은 공급 업체/레일/철도/lib/tasks/rails.rb가 모든 레이크 작업을로드하기 위해 사용되는 데 사용 된 것 같습니다.

$VERBOSE = nil
# Load Rails rakefile extensions
Dir["#{File.dirname(__FILE__)}/*.rake"].each { |ext| load ext }
# Load any custom rakefile extensions
Dir["#{RAILS_ROOT}/lib/tasks/**/*.rake"].sort.each { |ext| load ext }
Dir["#{RAILS_ROOT}/vendor/plugins/*/**/tasks/**/*.rake"].sort.each { |ext| load ext }

내 질문은 왜 '작업/레일'만 요구 메소드에 지정되었지만 파일의 전체 경로가 아닌가?

미리 감사드립니다.

도움이 되었습니까?

해결책

Rails 앱을 시작하면 config/boot.rb를 실행합니다. Rails::Initializer.set_load_path 그리고 그것은 $LOAD_PATH.

Ruby는 해당 디렉토리 목록을 사용하여 require 선. 당신이 그것을 절대적인 길을 주면 require '/home/lolindrath/ruby/lib.rb' 그 검색을 건너 뛸 것입니다.

이것은 대략 유사합니다 #include <stdlib.h> C/C ++에서 검색하는 곳에서는 포함 경로가 컴파일러를 제공하여 해당 헤더 파일을 찾습니다.

다른 팁

귀하의 경로가 귀하의 /config/environment.rb 파일에 설정되어 있기 때문에 믿습니다.

require File.join(File.dirname(__FILE__), 'boot')

확신하는. /config/boot.rb (Environment.rb에서 호출)에서 Rails_Root는 다음과 같이 설정됩니다.

RAILS_ROOT = "#{File.dirname(__FILE__)}/.." unless defined?(RAILS_ROOT)

내가 믿는 뿌리에서 물건을 요구할 수 있습니다. 어쨌든 그것이 대답이되기를 바랍니다!

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top