2017-10-24 15 views
0

다른 파일이 필요합니다 main.rbtester.rb, 나는 각각 별도로 호출되어 별도로 실행되는 파일이 있습니다 required.rb가 있습니다.필요한 파일의 파일 요구하기

required.rb 내에 모든 파일이 필요한 파일의 하위 디렉토리에 있어야합니다.

main.rb 
lib/ 
    required.rb 
    req_files/ 
     req1.rb 
     req2.rb 
     req3.rb 
tester/ 
    tester.rb 

필요한 파일을 가져 오는 코드는 다음과 같습니다 : 내가 본 제안 전략에

Dir[Dir.pwd + "/req_files/*.rb"].each do |file| 
    require file 
end 

, 그것은 Dir.pwd 또는 __FILE__을 활용 수, 문맥에 적용되는 모든 것은 다음과 같이 보입니다 required.rb의 위치는 처음부터 필요한 원본 파일의 컨텍스트입니다. 즉,이 두 파일을 모두 현재 설정과 별도로 요구할 수는 없습니다.

required.rb에 상대적인 경로를 나타내는 방법이 있습니까?

EDIT :

그것의 아니지만, 그것은 다음과 같이 표현 될 수 있도록 Dir[Dir.pwd + "/req_files/*.rb"]보다 구체적 Dir.pwd 원본 파일에 대하여 (주 또는 테스터)를 해결한다는 사실을 변경하지 않는다 require_relative해야 변화 때문에 또한 required.rbmain.rbtester.rb 모두에서 이미 require_relative을 통해 요구되는 점에 유의해야 두 항목에 대한 작업을

포인트입니다.

+0

[Ruby에서 \ _relative와 require가 필요한 것의 차이점은 무엇입니까?] (https://stackoverflow.com/questions/3672586/what-is-the-difference-between-require-relative-and- require-in-ruby) –

+0

@BradWerth : 실제로 _duplicate_는 아니지만. 이 질문에는'require_relative'에 대한 언급이 없기 때문입니다. –

+1

더 나쁜 목표를 만들었던 더 나은 "중복"이있었습니다. 나는 그것을보고 있었는데 어떻게 https://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-and-how-do-i-fix-it가 사용되는 것처럼 ... –

답변

0

좀, 실제 required.rb

예에 상대 경로를 나타내는 수있는 방법이 있나요. 이를위한 또 다른 방법이 있습니다.

http://ruby-doc.org/core-2.4.2/Kernel.html#method-i-require_relative true 또는

거짓 루비 →

require_relative (문자열)가 필요로하는 파일의 경로에 라이브러리 이름과 관련된 문자열을로드하려고합니다. 파일의 경로를 판별 할 수 없으면 LoadError가 발생합니다. 파일이로드되면 true를 반환하고 그렇지 않으면 false를 반환합니다.

0

__FILE__과 관련하여 올바르지 않습니다. Dir.pwd 대신 File.dirname(__FILE__)을 사용하면 실제 파일의 디렉토리 대 호출하는 파일의 디렉토리를 제공 할 수 있습니다.