2012-04-21 44 views
0

我性学习的cron作业和延迟的工作,所以我想用后台作业发送邮件和我使用的delayed_job我不不想被赋予耙作业手动启动工作:工作命令但要将此耙在cron作业,以便当过用户登录到仪表板这个命令是火和邮件发送给他的地址,下面是我的代码
方法发送邮件每当+与cron作业的delayed_job在开始工人

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作业我使用“只要”宝石所以我应该在我的shedule.rb写入文件,这样,当我登录到仪表板,我得到的邮件,而无需手动运行的工作。
请帮帮我。
谢谢。

回答

0

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

所以,你应该用script/delayed_job start启动工作代理,并让它运行所有的时间。您可以使用独立工具(如monit或god)来监视您的工作代理,以确保它始终处于运行状态。

+0

感谢这些信息,所以如果我启动worker然后关闭应用程序worker仍然运行?或者我需要再次启动员工? 我基本需要的是当用户登录他的仪表板邮件应发送如果你建议我任何代码,那么你是最受欢迎的或任何更改以前的代码也对我来说很好......并为这些基本问题感到抱歉。 – 2012-04-26 05:18:44