2012-06-10 15 views
8

私は、1分に1回(delayed_jobを使用して)実行する必要がある定期的なタスクを持っています。そのようなタスクがシステムにまだ存在していない場合、Railsが自動的にロードを終了するようにしたいと思います。Railsのロードが完了した後でコードを実行していますか?

私はRailsのブート・フロー全体の最後でいくつかのコードを実行するのに適していますか?誰かがconfig/environments/development.rb(または他の環境)を提案しましたが、delayed_jobはそこからジョブをキューに入れたときにActiveRecordの問題を出します。

私はhttp://guides.rubyonrails.org/initialization.htmlと相談しましたが、その種のコードには明確な場所がないようです。

この種の配備後の設定は、アプリのコードの外側にあるかもしれません。おそらくはレーキやその他の手段によって行われるのでしょうか?助言がありますか?

ありがとうございました!

+0

Cronの仕事ですか? (15文字) –

答えて

8

行いますhttp://guides.rubyonrails.org/initialization.htmlに関して、申し訳ありませんが、私たちはそれを書き直すために努力しています。あなたの問題のために、私はあなたのapplication.rbにconfig.after_initializeを試してみます

def after_initialize(&block) 
    ActiveSupport.on_load(:after_initialize, :yield => true, &block) 
end 
2

あなたは本当に

1)初期化子ディレクトリにそれを追加し、2つのオプションがあり、これは大丈夫でなければなりません。

2)application.rbの最後にそれを追加しますが、これはあまりきれいですが、それはこの時点で準備ができて初期化子のようなものを持っています; Pを理由ARの問題で失敗した)1ので、もし2)