在Rails中有没有办法让ENV重新加载"lib"文件而不必重新启动服务器?我正在使用"lib"中的模块中的一些类.但是,为了查看我的更改,我必须每次都重新启动服务器.我猜这是Rails的工作方式,但在开发库文件和/或插件时非常繁琐.
当然,我正在犯这个错误......?
最好
答案1和2都没有为我工作.相反,我收到了使用模块的控制器的错误.仅供参考,我的"lib/xmlitems"目录中有3个文件.我试图加载该子目录,然后我引用了"需要"所有其他文件的单个文件.我要单独加载所有文件吗?
我有一个Rails 4.1.0可安装的引擎.在引擎的application_helper.rb中:
module MyEngine
module ApplicationHelper
def test123
"test123"
end
end
end
Run Code Online (Sandbox Code Playgroud)
该方法位于虚拟应用程序的general/index.html.erb视图中:
%<= test123 %>
Run Code Online (Sandbox Code Playgroud)
这有效.但是,当我更改返回的字符串def test123并刷新浏览器时,不会显示新字符串.
当然,在虚拟应用程序中重新启动Web服务器会显示新字符串.
所以问题是,如何在不重新启动Web服务器的情况下重新加载引擎的文件?
PS.我最好找一种方法来使用Rails本身,或者解决这个问题的特定宝石(但不是像Guard,Spork等通用宝石,尽管如果所有其他方法都失败了,我也会考虑这些.)
PPS.在SO上也有类似的问题,但我已经尝试过所有这些问题(即使它们适用于Rails 2.x,3.x),但它们并没有为我工作.
Rails 3.2.3./lib我的自动加载路径中有一个Rails应用程序.我的一个库文件需要一堆这样的文件
Dir[Rails.root.join("lib/foo/*.rb")].each { |f| require f }
Run Code Online (Sandbox Code Playgroud)
在开发中,如果我更改它们,则不会重新加载这些文件.例如,如果我修改/lib/foo/bar.rb,我将不得不重新启动服务器以查看这些更改.任何人都可以建议一种方式,以便在每个请求上正确地重新加载它们吗?
经过多次谷歌搜索后,我尝试将这两个添加到我的配置中,但重新加载不会发生:
config.autoload_paths += %W(#{config.root}/lib)
config.autoload_paths += Dir["#{config.root}/lib/**/"]
Run Code Online (Sandbox Code Playgroud)
我对/ lib下的文件进行了更改,但Pow中的刷新不会重新加载更改
我错过了什么?
如何在开发模式下强制Rails 3.2按请求重新加载已挂载的机架应用程序?
我这样安装了葡萄应用程序
mount API2, :at => "/api2"
Run Code Online (Sandbox Code Playgroud)
但是,如果没有重新启动Web服务器,rails不会反映应用程