두 개의 Ruby 파일 인 exec.rb와 lib.rb가 있습니다. lib.rb는 exec.rb에서 필요합니다. lib.rb를 수정할 때마다 exec.rb를 다시 시작해야합니다.런타임에 동적으로 somefile.rb를 다시로드 하시겠습니까?
exec.rb를 실행하는 동안 lib.rb를 다시로드 할 수 있습니까?
두 개의 Ruby 파일 인 exec.rb와 lib.rb가 있습니다. lib.rb는 exec.rb에서 필요합니다. lib.rb를 수정할 때마다 exec.rb를 다시 시작해야합니다.런타임에 동적으로 somefile.rb를 다시로드 하시겠습니까?
exec.rb를 실행하는 동안 lib.rb를 다시로드 할 수 있습니까?
파일 변경 알림을 구독 할 수 있습니다. 다음은 osx 용 lib : rb-fsevent입니다.
파일이 변경되었다는 알림을 받으면 다시로드 할 수 있습니다.
filename = './lib.rb' # get file name from event
load filename
다시로드하지 않습니다 다음 require
로드 한 번만 파일 때문에, 대신 require
의 load
를 사용합니다.
File.mtime
을 사용하고 lib.rb의 마지막 수정 된 타임 스탬프를 비교하는 것이 가능합니다. 코드에서
mtime
를 얻을 : 필요한 경우
last_mtime = File.mtime('lib.rb')
load 'lib.rb'
나중에 루프에서 처리하는 동안, 수정 시간이 변경 있는지 다시 확인하고 다시로드 :
current_mtime = File.mtime('lib.rb')
if (current_mtime != last_mtime)
last_mtime = current_mtime
load 'lib.rb'
end
저는 이전에 비슷한 기술을 사용해 왔지만 잘 작동했습니다. 나는 5 분 간격으로 점검하기 위해 광산을 세웠지 만, 당신의 필요는 다를 수 있습니다.