当文件发生变化时,如何使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在这里✋