0

メールの配信を処理するために、delayed job gem を使用しています。開発中は問題なく動作しており、非常に満足しています。ただし、サーバーにデプロイした後、コマンドを使用すると:

RAILS_ENV=production script/delayed_job start

それは機能します。ログ ファイルとデータベースを確認しましたが、すべて問題なく、期待どおりにメールを受信できます。ただし、サーバーを終了しても何も起こりません。

Sequel Proを使用してデータベースを確認したところ、遅延したジョブによって DB に行が作成され、run_at 列の時間の後に行が消えてしまいましたが、メールを受信できませんでした。再度ログインすると、遅延ジョブの処理がまだ実行されており、ログに異常はありませんが、受信するはずのメールが受信できません。セルフログを常に維持することはできません。遅延ジョブがなければ、従来の方法を使用できますが、適切に動作していますが遅いです。サーバーからログアウトした後、遅延ジョブが失敗したのはなぜですか?

これは、config/initializers/delay_job.rb の遅延ジョブ設定です。

require "bcrypt"

Delayed::Worker.max_attempts = 5
Delayed::Worker.delay_jobs = !Rails.env.test?
Delayed::Worker.destroy_failed_jobs = false

PS別のバージョンのレールを使用する必要があるため、スタンドアロンのパッセンジャーと関係があるかどうかはわかりません。そのため、ポート3002でスタンドアロンのパッセンジャーを使用する必要があります。

4

1 に答える 1

0

私は解決策を見つけたと思います。

これを読んだ後https://github.com/collectiveidea/delayed_job/wiki/Common-problems#wiki-jobs_are_silently_removed_from_the_database

構成ファイルの「require bcrypt」を見逃す可能性があることにすぐに気付きました。

私は RVM を使用しており、多くの gemset を持っていますが、この特定の gemset だけが gem bcrypt-ruby を持っています。システムをログアウトした後、遅延ジョブがグローバルまたはデフォルトの gemset を使用する可能性があるため、すべての gemset に bcrypt-ruby をインストールし、スタンドアロンのパッセンジャーを再起動すると機能します!

しかし、それでも、bcrypt と遅延ジョブの関係はよくわかりません。

于 2013-01-30T08:39:52.957 に答える