2013-03-17 111 views
0

我想在某种特定方法后直接启动作业。所以,我用通常的rails来启动应用程序。上传一些东西,所以创建方法被调用。创建方法之后:perform_analysis -method被延迟。有些数据被插入到delayed_jobs表中。通常我会让工作人员在命令行中输入"script/delayed_job start"。但我想自动启动工作,所以我不会输入任何内容。红宝石在轨道上,与轨道延迟作业s

型号:

after_create :perform_analysis 
def perform_analysis 
bla 
end 
handle_asynchronously :perform_analysis, :run_at => Proc.new { 5.minutes.from_now } 

所以,我运行轨道秒的应用。我登录我的wep页面。上传一些文件,5分钟后作业延迟。然后工人应该开始工作。 我发现this page几乎是我想要的,但不知何故,工人根本就没有开始。因此schedule.rb未运行。我应该做一些更多的事情,而不是在该网页上告知的事情?

是否有任何其他可能做到这一点?

回答

0

我建议你看一看工头(http://ddollar.github.com/foreman/),让您的procfile申报工作进程:

web: bundle exec rails s 
worker: bundle exec rake jobs:work 

这样,一个命令foreman start将启动服务器和工人。输出将显示在两个窗口中。

+0

仅仅在创建方法后的一分钟内就可以启动worker了吗? – Tonja 2013-03-17 19:39:15

+0

我以前没有看到过这个设置。你有没有理由不继续工作? – Leito 2013-03-18 13:25:51