如何调用Rails控制台的重新加载!命令编程?

时间:2012-01-23 20:20:34

标签: ruby-on-rails

使用Rails控制台时,有一个方便的reload!函数可以重新加载模型等。如何从我的程序的另一部分调用它?

编辑我被问到了一些用例。这是我有一个运行Jruby和clojure repl的长期运行的JVM进程。我可以从REPL运行RSpec测试,也可以从那里运行任意Ruby代码。但我无法弄清楚如何重新加载Ruby类,以便我可以编辑代码并在Ruby运行时看到它已更改。我不再使用这种设置,主要是因为测试它是如此痛苦。

(我正在使用Jruby,可以从我的后端以编程方式访问Ruby VM。)

1 个答案:

答案 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 %>