0

cron ジョブと遅延ジョブを学習しています。バックグラウンド ジョブを使用してメールを送信したいと考えています。そのために私はdelayed_job宝石を使用しています。コマンドを実行してワーカーを手動で開始したくはありませんが、rake jobs:workこのレーキを cron ジョブに設定して、ユーザーがダッシュボードにログインするたびにこのコマンドが起動され、メールがそのアドレスに送信されるようにしたいと考えています。以下は私のコードです:

メール送信方法

def dashboard      
    @user = User.find(params[:id])      
    UserMailer.delay.initial_email(@user)      
end      

ユーザーメーラー

def initial_email(user)      
    @user = user     
    mail(:to => user.email,:subject => "Welcome to my website!")       
end      

「いつでも」Gem を使用している cron ジョブの場合、ダッシュボードにログインしたときにワーカーを手動で実行せずにメールを受け取るには、schedule.rb ファイルに何を記述すればよいですか?

4

1 に答える 1

0

DelayedJob は常にバックグラウンドで実行されているはずなので、起動する必要はありません。ワーカー エージェントはキューをチェックして、実行する必要があるタスクがあるかどうかを確認し、それらを実行します。これは、実行する必要があるタスクをバックグラウンド チェックで実行する、アプリケーションの 2 番目のインスタンスのようなものです。

そのため、Worker エージェントを起動して、script/delayed_job start常に実行する必要があります。monit や god などの別のツールを使用して、ワーカー エージェントを監視し、常に実行されていることを確認できます。

于 2012-04-25T14:25:18.763 に答える