2012-01-23 59 views
2

使用Rails控制檯時,有一個方便的功能,可以重新加載模型等。如何從我的程序的另一部分調用此函數?如何調用Rails控制檯的重新加載!命令編程?

編輯我被問了一些用例。這是我有一個運行Jruby和clojure repl的長時間運行的JVM進程。我可以從REPL運行RSpec測試,並且可以從那裏運行任意的Ruby代碼。但我無法弄清楚如何重新加載Ruby類,以便我可以編輯代碼並在Ruby運行時查看它。我不再使用這種設置,主要是因爲測試這是一個很痛苦的事情。

(我使用Jruby,可以從我的後端以編程方式訪問Ruby VM)。

+0

您可能想澄清一下,這對我沒有意義。 –

+0

@andy這有幫助嗎?不知道我還能做什麼 –

+0

您是指在請求/響應循環期間,在您的測試環境中,還是其他什麼?用例不明確,這是我認爲當他們試圖回答時給人們帶來麻煩的原因。 –

回答

1

你有沒有試過觸摸restart.txt?不幸的是,我沒有使用JRuby的經驗,但確認它適用於我的應用程序。

FileUtils.touch('tmp/restart.txt') 

您可能想要做一些Get請求以外的事情,並在一些身份驗證後加以保護。

我把它扔進管理員控制器,並將路由添加到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 %> 
相關問題