2013-02-15 2 views

ответ

1

Вы можете подписаться на уведомления об изменении файла. Вот lib для osx: rb-fsevent.

Когда вы получаете уведомление о том, что файл был изменен, его можно перезагрузить.

filename = './lib.rb' # get file name from event 
load filename 

Вы должны использовать load вместо require, потому что require загружает файл только один раз, а затем не загрузить его снова.

1

Это можно сделать, используя 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 

Я использовал подобную технику в прошлом, и она хорошо работала. Я установил мой, так что он проверяется только каждые пять минут, но ваши потребности могут быть разными.