2009-05-20 2 views
13

Это продолжение этого question. Во время разработки я должен перезапустить приложение rails каждый раз, когда я меняю код в lib /, чтобы изменения кода вступили в силу. Как получить этот код для автоматической перезагрузки, например, контроллеров, моделей и т. Д.?Как сделать код в lib/автоматически перезагружать при изменении файла?

+0

Возможный дубликат [(Rails) Перезагрузка файлов «lib» без перезапуска сервера ...?] (Http://stackoverflow.com/questions/1114388/rails-reloading-lib-files-without-having-lib-files-without-having- to-restart-server) –

+0

Возможный дубликат [Ruby on Rails 3 - Перезагрузка каталога lib для каждого запроса] (http://stackoverflow.com/questions/3282655/ruby-on-rails-3-reload-lib-directory- для каждого запроса) – shime

ответ

0

почему бы не просто ввести

load Rails.root + '/lib/your_lib.rb' 
+1

это работает только для загрузки, например это в вашем контроллере – ecoologic

+0

Сбой, если я не использовал 'join':' load Rails.root.join ('lib/your_lib.rb') ' –

1
module ActsAsReloadable 
    def self.included(base) 
    ActiveSupport::Dependencies.explicitly_unloadable_constants << base.name if Rails.env == 'development' 
    end 
end 

Чтобы использовать его, просто include ActsAsReloadable в вашей библиотеки,/* файлы и добавлять config.autoload_paths += %W(#{config.root}/lib) в config/application.rb

2

Для Rails 3, изменять инструкции приведенный в статье из ответа @ science. В файле environments/development.rb, добавьте следующие строки:

ActiveSupport::Dependencies.autoload_paths << File::join(Rails.root, 'lib') 
ActiveSupport::Dependencies.explicitly_unloadable_constants << 'MyModuleInLibFolder' 

Конечно, заменить имя модуля для MyModuleInLibFolder.

+0

@ ответ наука был удален как ответ только для ссылок (ссылка с тех пор сгнила, для чего это стоит). –

Смежные вопросы