当文件发生变化时,如何使lib /中的代码自动重新加载?

时间:2009-05-20 03:53:34

标签: ruby-on-rails

这是question的后续行动。在开发过程中,我每次更改lib /中的代码时都必须重新启动rails应用程序才能使代码更改生效。如何使代码自动重新加载,如控制器,模型等?

4 个答案:

答案 0 :(得分:2)

对于 Rails 3 ,请更改@ science的答案中文章中给出的说明。在environments/development.rb文件中,添加以下行:

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

当然,请将模块的名称替换为MyModuleInLibFolder

答案 1 :(得分:1)

为什么不直接输入

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

答案 2 :(得分:1)

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

要使用它,只需在您的lib / *文件中include ActsAsReloadable并在config.autoload_paths += %W(#{config.root}/lib)

中添加config/application.rb

答案 3 :(得分:0)

如果您已经采用了以前的方法但不起作用(例如我的情况),请尝试使用config.reload_classes_only_on_change中的development.rb

Rails 4.2 here✋