9

(delayed_job を使用して) 1 分に 1 回実行する必要がある定期的なタスクがあります。そのようなタスクがシステムにまだ存在していない場合、ロードが完了するとすぐにRailsが自動的にキューに入れるようにしたいと思います。

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

http://guides.rubyonrails.org/initialization.htmlを調べましたが、そのようなコードの明確な場所もないようです。

この種の展開後のセットアップは、おそらくアプリのコードの外部で、おそらくrakeまたはその他の手段を介して行われますか? 助言がありますか?

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

4

3 に答える 3

8

http://guides.rubyonrails.org/initialization.htmlについては、申し訳ありませんが、書き直しに取り組んでいます。あなたの問題については、私はconfig.after_initializeあなたのapplication.rbで試してみます

def after_initialize(&block)
  ActiveSupport.on_load(:after_initialize, :yield => true, &block)
end
于 2012-06-11T02:39:54.943 に答える
4

コードを初期化ディレクトリに追加します。

http://guides.rubyonrails.org/configuring.html#using-initializer-files

于 2012-06-10T21:25:39.317 に答える
2

あなたには本当に2つのオプションがあります

1)それを初期化ディレクトリに追加すると、これで問題ありません。

2) application.rb の最後に追加します。これはクリーンではありませんが、この時点でイニシャライザのようなものが用意されています ;p したがって、1) AR の問題が原因で失敗した場合は 2) を実行します。

于 2012-06-10T21:28:21.517 に答える