2012-01-23 6 views
2

Railsコンソールを使用しているときは、モデルをリロードする便利な機能があります。reload!プログラムの別の部分からこれをどのように呼び出すことができますか?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リクエスト以外の処理を行い、何らかの認証の背後にあるものを保護したいと思うかもしれません。

私はそれを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 %> 
関連する問題