2

Rails 3.2でdelayed_job gem https://github.com/collectiveidea/delayed_jobを使用して、バックグラウンドでメールを送信しようとしています。

ジェムをインストールしました

 gem 'delayed_job_active_record'

指示に従って、テーブルを生成し、移行を実行しました

$ rails generate delayed_job:active_record
$ rake db:migrate

Rails 3 のメーラーには特別な指示があることに注意してください。

     # without delayed_job
Notifier.signup(@user).deliver

# with delayed_job
Notifier.delay.signup(@user)

やった

 def send_welcome_email

    #UserMailer.welcome_email(self).deliver  <-- original code that worked

   UserMailer.delay.welcome_email(self)        

  end

しかし、メールが送信されません。delayed_job を使おうとする前は機能していました...

誰かが初心者のために明確にすることができます...?

4

1 に答える 1

7

少なくとも 1 つのdelayed_jobワーカーを開始しましたか?

rake jobs:work

実際、delayオブジェクトを呼び出すときは、ジョブをキューに入れているだけです。DelayedJobつまり、ジョブに関連付けられたすべてのメタデータを含むテーブル内に新しいエントリが作成されます。

DelayedJobしたがって、すべてのエントリを参照して 1 つずつ実行する何かが必要であり、それが上記の rake タスク (ワーカー) です。

本番環境では、アプリケーションをデプロイする場所によって異なります。HerokuWorker dynosでは、必要なワーカー ( ) の数を指定するだけで、自動的に開始されます。

于 2012-05-12T21:58:07.793 に答える