1

実行しているコマンドを知りたいです。Rails イニシャライザは、 rake などのほとんどのコマンドに対して実行されますdb:migrate, rake db:setup, rails console, rails server

この質問の理由は、Rails の初期化中に Rufus-scheduler を使用していくつかのジョブのスケジューリングを開始したためです。rails console残念ながら、これらのイニシャライザはすべて、実行中またはレーキ中に実行されdb:migrateます。実行時のみジョブをスケジュールしたいrails server

あなたの助けに感謝します。ありがとう。

4

2 に答える 2

2

サーバーを実行しているときにのみジョブをスケジュールしたい場合、次のコマンドは、サーバーを実行していることを理解するのに役立ちます。

defined?(Rails::Server)

これで問題は解決します。

于 2014-01-31T07:23:22.400 に答える
0

あなたが言及しているrakeタスク、およびほとんどのRails関連のタスクは、rakeタスクに依存していenvironmentます。この rake タスクは、 のイニシャライザを含め、アプリケーションに必要な各ファイルと依存関係を順番に必要とconfig/environment.rbするものをロードします。config/application.rbconfig/initializers/

この依存関係グラフに含めるべきではないものがある場合、それらはおそらく初期化子に属していません。

「バックグラウンド ワーカー」を使用する一般的な方法は、個別の rake タスクを用意し、foremanなどのライブラリを使用して、 a を読み取っProcfileて複数のプロセスを起動することです。

例:

app: rails server
workers: rake jobs:work
于 2013-10-02T17:42:28.780 に答える