这是关于这个问题的跟进。在开发过程中,每次我更改lib/文件夹下的代码时都必须重新启动rails应用程序,以使代码更改生效。如何让这些代码像控制器、模型等一样自动重新加载?
这是关于这个问题的跟进。在开发过程中,每次我更改lib/文件夹下的代码时都必须重新启动rails应用程序,以使代码更改生效。如何让这些代码像控制器、模型等一样自动重新加载?
对于Rails 3,请根据@science答案中给出的说明进行操作。在您的environments/development.rb
文件中,添加以下行:
ActiveSupport::Dependencies.autoload_paths << File::join( Rails.root, 'lib')
ActiveSupport::Dependencies.explicitly_unloadable_constants << 'MyModuleInLibFolder'
MyModuleInLibFolder
。module ActsAsReloadable
def self.included(base)
ActiveSupport::Dependencies.explicitly_unloadable_constants << base.name if Rails.env == 'development'
end
end
为什么不直接输入呢?
load Rails.root + '/lib/your_lib.rb'
join
,否则会失败:load Rails.root.join('lib/your_lib.rb')
。 - Gavin Miller如果你已经尝试了之前的方法但是还是不起作用(就像我的情况),可以尝试在development.rb
中使用config.reload_classes_only_on_change
选项。
这里使用的是Rails 4.2 ✋。