ruby-on-rails – 在Rails 3.1中重新加载lib文件而不重启dev服务
发布时间:2020-12-17 04:05:37 所属栏目:百科 来源:网络整理
导读:我在rails中的lib文件夹中有一些模块,即: /lib/myapp/lib/** 我正在开发它们,但每次我必须重新启动服务器.我在SO上遇到了很多不同的问题,但大多数问题都不适用于rails 3.1 我目前有一个初始化器,可以做到这一点; if Rails.env == "development" lib_reloade
我在rails中的lib文件夹中有一些模块,即:
我正在开发它们,但每次我必须重新启动服务器.我在SO上遇到了很多不同的问题,但大多数问题都不适用于rails 3.1 我目前有一个初始化器,可以做到这一点; if Rails.env == "development" lib_reloader = ActiveSupport::FileUpdateChecker.new(Dir["lib/**/*"],true) do Rails.application.reload_routes! # or do something better here end ActionDispatch::Callbacks.to_prepare do lib_reloader.execute_if_updated end end if Rails.env == "development" lib_reloader = ActiveSupport::FileUpdateChecker.new(Dir["lib/myapp/lib/*"],true) do Rails.application.reload_routes! # or do something better here end ActionDispatch::Callbacks.to_prepare do lib_reloader.execute_if_updated end end 有没有通用的方法来做到这一点?每次都要重启服务器非常耗时! 解决方法
摆脱初始化程序并在你的application.rb文件中放入以下行:
config.autoload_paths += Dir["#{config.root}/lib/**/"] 需要注意的一点是,您的模块和类名应遵循自动重载的命名约定.例如,如果你有文件lib / myapp / cool.rb,那么cool.rb中类/模块声明的常量应如下所示: Myapp::Cool 如果您有文件lib / myapp / lib / cool.rb并且您希望它使用Cool作为类/模块名称而不是Myapp :: Lib :: Cool,那么您的自动加载应该如下所示: config.autoload_paths += Dir["#{config.root}/lib/myapp/lib/**/"] 只要您在devmode中运行,rails就会自动重新加载自动加载路径中的所有类/模块并遵循命名约定. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容