Может ли консоль Rails перезагружать модули под lib?
У меня есть модуль в моем проекте Rails под lib. Я запускаю "rails c" и делаю некоторые эксперименты в консоли. Я делаю изменения в модуле под lib, введите " перезагрузить!'из консоли, и он не перезагружает файл. Я должен выйти из консоли и перезапустить, что является настоящей болью.
есть ли лучший способ перезагрузить этот файл?
4 ответа:
в случае, если кто-то заинтересован, вот мои выводы на Как автоматически перезагрузить файлы require в Rails без перезагрузки сервера.
решение теперь доступно в виде рубинового камня require_reloader.
это monkeypatch, который может помочь вам, вставьте это в консоль rails (или вы можете поместить этот код в файл monkeypatch - хотя я не рекомендую объект monkeypatching с помощью метода утилиты):
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!
на любой объект, чтобы перезагрузить его исходный код.