반응형
Rails 콘솔이 lib에서 모듈을 다시로드 할 수 있습니까?
내 Rails 프로젝트의 lib 아래에 모듈이 있습니다. 'rails c'를 실행하고 콘솔에서 몇 가지 실험을합니다. lib 아래의 모듈을 변경하고 'reload!'를 입력합니다. 콘솔에서 파일을 다시로드하지 않습니다. 콘솔을 종료하고 다시 시작해야합니다. 정말 고통 스럽습니다.
해당 파일을 다시로드하는 더 좋은 방법이 있습니까?
이 시도:
load "#{Rails.root}/lib/yourfile.rb"
관심있는 사람을 위해, 여기에 서버를 다시 시작하지 않고 Rails에서 파일을 자동으로 다시로드하는 방법 에 대한 내 발견이 있습니다.
이 솔루션은 이제 Ruby gem require_reloader로 제공 됩니다.
이것은 여러분을 도울 수있는 monkeypatch입니다. 이것을 rails 콘솔에 붙여 넣으십시오 (또는이 코드를 monkeypatch 파일에 넣을 수 있습니다-유틸리티 메소드로 monkeypatching Object를 권장하지는 않습니다).
class Object
def self.reload_myself!
method = (self.instance_methods(false) + self.methods(false)).select{|method| method.to_s[0] =~ /[A-Za-z]/}.last
if method
if self.instance_methods(false).index method
method = self.instance_method(method)
elsif
method = self.method(method)
end
if (method.source_location)
source_location = method.source_location[0]
puts "reloading: #{source_location}"
load "#{source_location}"
else
puts "could not reload #{self.name}"
end
end
end
end
그리고 당신은 전화 할 수 있습니다
reload_myself!
소스 코드를 다시로드 할 수 있습니다.
다음에 추가 config/initializers/reload.rb
class Object
def reload_lib!
Dir["#{Rails.root}/lib/**/*.rb"].map { |f| [f, load(f) ] } #.all? { |a| a[1] }
# uncomment above if you don't want to see all the reloaded files
end
end
이제 콘솔 lib
에 입력하여 모든 파일을 다시로드 할 수 있습니다.reload_lib!
참고 URL : https://stackoverflow.com/questions/6361401/can-rails-console-reload-modules-under-lib
반응형
'Program Tip' 카테고리의 다른 글
다른 유형에 대한 반복 (0) | 2020.11.26 |
---|---|
값에 따라 DataGrid 셀 색상 변경 (0) | 2020.11.26 |
링크 위로 마우스를 가져갈 때 나타나는 손 모양 커서를 제거 할 수 있습니까? (0) | 2020.11.26 |
Bash / Debian에서 파일 생성 날짜 / 시간을 얻는 방법은 무엇입니까? (0) | 2020.11.26 |
벡터 드로어 블을 미리 볼 수있는 방법이 있습니까? (0) | 2020.11.26 |