当文件发生变化时,如何使lib /中的代码自动重新加载?
这是对这个问题的跟进。 在开发过程中,我每次更改lib /中的代码时都必须重新启动rails应用程序才能使代码更改生效。 如何让这些代码自动重新加载,如控制器,模型等?
对于Rails 3 ,请改变@ science的答案中文章中给出的说明。 在您的environments/development.rb
文件中,添加以下行:
ActiveSupport::Dependencies.autoload_paths << File::join( Rails.root, 'lib') ActiveSupport::Dependencies.explicitly_unloadable_constants << 'MyModuleInLibFolder'
当然,将模块的名称替换为MyModuleInLibFolder
。
为什么不进入
load Rails.root + '/lib/your_lib.rb'
module ActsAsReloadable def self.included(base) ActiveSupport::Dependencies.explicitly_unloadable_constants << base.name if Rails.env == 'development' end end
要使用它,只需在lib / *文件中include ActsAsReloadable
,并在config/application.rb
添加config.autoload_paths += %W(#{config.root}/lib)
。
如果您已经执行了以前的方法但不起作用(如我的情况),请尝试使用development.rb
config.reload_classes_only_on_change
。
Rails 4.2在这里✋