0

我正在学习cron作业和延迟作业,我想使用后台作业发送电子邮件;为此,我正在使用delayed_job宝石。我不想通过运行rake jobs:work命令手动启动工作程序,但我想在 cron 作业中设置这个 rake,所以每当用户登录仪表板时,这个命令就会被触发,并且邮件会发送到他的地址。以下是我的代码:

发送邮件方法

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 文件中写些什么,这样当我登录仪表板时,我会收到一封邮件,而无需手动运行 worker?

4

1 回答 1

0

DelayedJob 应该一直在后台运行,因此不需要启动它。工作代理检查队列以查看是否需要执行任何任务并运行它们。它很像您的应用程序的第二个实例,它在后台检查需要运行的任务。

所以你应该启动工作代理script/delayed_job start并让它一直运行。您可以使用单独的工具(如 monit 或 god)来监控您的工作代理,以确保它始终在运行。

于 2012-04-25T14:25:18.763 回答