2011-11-05 19 views
5

私はdelayed_jobを使用していますが、rakeジョブを使用してジョブを実行することができます。しかし、デーモン版を使用すると、プロセスリストに表示されますが、何もしません。Delayed_jobデーモンは開発中ではありませんか?

私が使用している:

  • レールを(3.0.9)
  • delayed_job(2.1.4)
  • デーモン(1.0.10)

私が実行しているdelayed_job使用:

unix>RAILS_ENV=development script/delayed_job start 
+0

'RAILS_ENV =開発スクリプト/ delayed_job status'の結果は何ですか? – Ernest

+0

デーモンの宝石なしで実行しようとしましたか? – Ernest

+0

Gemfile.lockでは、デーモンは必須の依存関係ですが、明示的な使用は削除して試してみます。その理由は、システム上にデーモン1.1.4があったので、特定のバージョン(デーモン用に1.0.10を使用することを中心に多くのStackOverflow提案を使用しています)を使用しようとしました。 – Aditya

答えて

3

あなたの質問にお答えするには、形成。

データベースにジョブが追加されていますか?仕事に間違いはありますか?

すでに言及した通りRAILS_ENV=development script/delayed_job statusの結果はどうなりますか?

第2に、最も一般的な問題のWikiページに行きましたか?

https://github.com/collectiveidea/delayed_job/wiki/Common-problems

+0

ジョブがデータベースに追加されます。それらはデーモンによって処理されませんが、レーキジョブによって処理されます。私は遅延ジョブステータスメッセージをチェックしますが、実行中であることがわかります(2回起動すると、プロセスはすでに実行中です)+ delayed_job.logのpidは、ruby delayed_jobプロセスのPIDと一致します。 – Aditya

+0

ステータスは 'delayed_job:running [pid 1473]'を返します。 – Aditya

3

これは、カスタムジョブのクラスファイルをロードする問題である可能性があります。テストするには、次のように試してみてください:

  • レールコンソールrails console --sandboxに入力してください。
  • テーブルjob = Delayed::Job.firstに仕事があることを確認してください。
  • お試しYAML.load(job.handler)ArgumentError: undefined class/module MyCustomClassのようなエラーが発生した場合は、カスタムジョブのロードに問題がある可能性があります。
  • まだレールコンソールにあるrequire 'My_Custom_Classを実行してください。次に、YAML.load(job.handler)コマンドを再度実行します。これが適切なオブジェクトを返す場合は、間違いなくクラスを読み込む問題です。

問題を修正するには、ファイルconfig/initializers/custom.rbを作成し、require 'My_Custom_Class'と入力します。

その後、rake jobs::workoffを実行し、このようなものを得ることができる必要があります:

[Worker(host:my.host pid:5085)] Starting job worker 
[Worker(host:my.host pid:5085)] MyCustomJob completed after 0.0774 
[Worker(host:my.host pid:5085)] 1 jobs processed at 9.1935 j/s, 0 failed ... 
[Worker(host:my.host pid:5085)] No more jobs available. Exiting 
関連する問題