2011-01-08 1 views
54

Rails 환경에서 사용하기 위해 Ruby 스크립트를 작성하고 있지만, Rails 콘솔을 다시로드하면 문제가 발생할 수 있으므로 irb에서 실행하도록 선택했습니다. 이제 대기 시간은 irb보다 훨씬 짧습니다.하지만 irb를 다시 시작해야하고 변경을 할 때마다 스크립트를 요구해야합니다. irb에서 스크립트를 다시로드하는 간단한 방법이 있습니까?IRB에서 스크립트를 어떻게 다시로드 할 수 있습니까?

나는 방법을 찾았습니다 this thread,하지만 그게 분명히 보석 파일에만 적용됩니다. 문을 필요로 내 것은이

require "#{File.expand_path(__FILE__)}/../lib/query" 

편집과 같습니다 load보다는 require을 시도하는 데, 난 여전히 작동 가져올 수 없습니다. 나는이 실수를 멈출 수 없다. 대신 require를 사용

ruby-1.9.2-p0 > load "#{File.expand_path(__FILE__)}/../lib/query.rb" 
LoadError: no such file to load -- /Users/newuser/Dropbox/Sites/rails/hacknyc/(irb)/../lib/query.rb 

답변

84

irb에서 File.expand_path(__FILE__)}은 단지 "#{path you ran irb from}/(irb)"을 반환합니다. 실제로 존재하지 않는 경로가 생성됩니다. 다행히도 모든 파일 경로는 어쨌든 irb를 실행 한 위치와 관련이 있습니다. 그건 괜찮아요,

load "lib/query.rb" 

당신이 실제 파일에 __FILE__를 사용하려면하지만 IRB의 유효한 경로를 생산하는 기대하지 않는다 : 이것은 당신이 필요로하는 모든 것을 의미한다. irb에는 "파일"이 전혀 없기 때문에 유효한 경로를 전혀 반환 할 수 없습니다.

로드 또는 필요에 따라 irb에로드 된 파일에서 사용되는 경우 __FILE__도 정상적으로 작동합니다. 그게 뭘위한거야.

34

, load을 시도합니다. 전자는 소스 파일을 한 번만로드하고, 후자는 소스 파일을 호출 할 때마다로드합니다.

+1

로드를 시도했지만 파일을 찾을 수 없다는 불만을 계속해서 줄 끝에 rb 확장자를 넣었습니다. – picardo

+0

참조 : "Ruby 필요 VS로드 VS 포함 확장 VS"- http://ionrails.com/2009/09/19/ruby_require-vs-load-vs-include-vs-extend/ – Purplejacket

1

나는 load이 당신이 찾고있는 제품이라고 생각합니다.

+1

나는' 로드'하지만 파일을 찾을 수 없다는 불평을 계속하고, 줄 끝 부분에 rb 확장자를 넣었습니다. – picardo

+1

파일의 확장자를 넣으십시오. – hyeomans

3

this link에 따르면 파일을로드해야하고 확장자를 잊어서는 안됩니다.

this link number 2에서 사용하기에 더 좋은 버전이 있습니다.이 역시 당신에게 도움이 될 수 있습니다.

왜 레일 콘솔이 작동하지 않는지 해싱 해 볼 수 있습니다.

+0

레일 콘솔의로드가 너무 느립니다. 나는'load'를 시도했으나 파일을 찾을 수 없다는 불평을 계속했고, 줄의 끝에 rb 확장자를 넣었습니다. – picardo

+0

이 파일이 lib 디렉토리 안에 있으면로드 된 것이므로 시작할 때 오류가 발생하지 않는 한이 파일을 사용할 수 있거나 사용할 수 있어야합니다. 그것을 다른 파일에서 사용하려면 레일스 앱의 파일 중 하나에'require NameOfModuleOrClass' (쿼리 파일 안에 있음)를 추가하기 만하면됩니다. – pjammer