Как сделать код в lib/автоматически перезагружать при изменении файла?

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

Ответ 1

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

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

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

Ответ 2

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

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

Ответ 3

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

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