Nice programing

IRB에서 스크립트를 어떻게 다시로드 할 수 있습니까?

nicepro 2020. 12. 3. 19:43
반응형

IRB에서 스크립트를 어떻게 다시로드 할 수 있습니까?


Rails 환경에서 사용할 Ruby 스크립트를 작성하고 있지만 Rails 콘솔을 다시로드하는 것이 고통 스러울 수 있으므로 irb에서 실행하기로 선택했습니다. 이제 irb보다 대기 시간이 훨씬 짧지 만 irb를 다시 시작해야하고 변경할 때마다 스크립트가 필요하다는 점이 귀찮습니다. irb에서 스크립트를 다시로드하는 더 간단한 방법이 있습니까?

이 스레드 에서 메서드를 찾았 지만 분명히 gem 파일에만 적용됩니다. 내 요구 사항은 다음과 같습니다.

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

편집 : load대신 시도했지만 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

irb에서는 File.expand_path(__FILE__)}을 반환 "#{path you ran irb from}/(irb)"합니다. 실제로 존재하지 않는 경로를 만듭니다. 다행히 모든 파일 경로는 어쨌든 irb를 실행 한 위치에 상대적입니다. 즉, 필요한 것은 다음과 같습니다.

load "lib/query.rb"

__FILE__실제 파일에서 를 사용하려면 괜찮지 만 irb에서 유효한 경로를 생성 할 것으로 기대하지 마십시오. irb에는 "파일"이 전혀 없기 때문에 유효한 경로를 전혀 반환 할 수 없습니다.

또한 __FILE__load 또는 require를 통해 irb에로드 된 파일에서 사용하면 제대로 작동합니다. 그게 목적 이니까요.


을 사용하는 대신 require시도해보십시오 load. 전자는 소스 파일을 한 번만로드하고 후자는 호출 할 때마다로드합니다.


이 링크 에 따라 파일을로드해야하며 확장자를 잊지 마십시오.

이 링크 번호 2 에서도 사용할 수있는 멋진 버전 있습니다.

Rails 콘솔이 작동하지 않는 이유를 해시하는 것이 좋습니다.


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

참고 URL : https://stackoverflow.com/questions/4632090/how-can-i-reload-a-script-in-irb

반응형