我正在学习cron工作和推迟工作,我想用后台工作发送电子邮件;因为我正在使用delayed_job
宝石。我不想通过运行rake jobs:work
命令手动启动工作程序,但是我想在cron作业中设置此rake,因此每当用户登录仪表板时,都会触发此命令并将邮件发送到他的地址。以下是我的代码:
发送邮件方法
def dashboard
@user = User.find(params[:id])
UserMailer.delay.initial_email(@user)
end
UserMailer
def initial_email(user)
@user = user
mail(:to => user.email,:subject => "Welcome to my website!")
end
对于cron作业,我每次都使用Gem,那么我应该在schedule.rb文件中写什么,这样当我登录仪表板时,我会收到一封邮件,而不是手动运行工人?
答案 0 :(得分:0)
DelayedJob应该在后台一直运行,所以不需要启动它。 工作器代理检查队列以查看是否需要执行任何任务,并运行它们。 它非常类似于应用程序的第二个实例,它在后台运行,检查需要运行的任务。
因此,您应该使用script/delayed_job start
启动worker代理并让它一直运行。您可以使用monit或god之类的单独工具来监视您的工作人员代理,以确保它始终在运行。