使用Rails控制台时,有一个方便的reload!
函数可以重新加载模型等。如何从我的程序的另一部分调用它?
编辑我被问到了一些用例。这是我有一个运行Jruby和clojure repl的长期运行的JVM进程。我可以从REPL运行RSpec测试,也可以从那里运行任意Ruby代码。但我无法弄清楚如何重新加载Ruby类,以便我可以编辑代码并在Ruby运行时看到它已更改。我不再使用这种设置,主要是因为测试它是如此痛苦。
(我正在使用Jruby,可以从我的后端以编程方式访问Ruby VM。)
答案 0 :(得分:2)
您是否尝试过触摸restart.txt?不幸的是,我没有JRuby的经验,但确认它适用于我的应用程序。
FileUtils.touch('tmp/restart.txt')
您可能希望执行除Get请求之外的其他操作,并在某些身份验证后保护它。
我把它扔进了Admin控制器并添加了路由到config / routes。
# app/controllers/admin.rb
class AdminController < ApplicationController::Base
@@time = Time.now # This value gets cached with the model.
def reboot
FileUtils.touch('tmp/restart.txt')
@restarted_time = @@time
end
end
# config/routes.rb
namespace :admin
get 'reboot'
end
# app/views/admin/reboot.html.erb
<%= @restarted_time.to_s %>