如何在 Rails 服务器启动时运行"rake resque:work QUEUE=*"?



我已经正确安装了Resque,但是要处理所有队列,我需要运行

rake resque:work QUEUE='*'

问题是我需要保持终端窗口打开,否则我需要重新设置:工作将行不通。

您知道每次运行" Rails Server"时,您知道一种自动运行的方法吗?

我在 localhost

lib/tasks/resque.rake

require 'resque/tasks'
task "resque:setup" => :environment do
    ENV['QUEUE'] = "*"
end

而不是调用indoke函数,您可以使用像工头一样的宝石,可以调用所有其他任务。如果您希望在很大程度上具有中性解决方案以及部署到云中,这将很有用。您的procfile可以具有以下内容:

web:    bundle exec thin start -p $PORT
worker: bundle exec rake resque:work QUEUE=*
clock:  bundle exec rake resque:scheduler

来源:工头简介

现在要启动服务器,您只需要发出foreman start命令,该命令将子线程叉出来以执行个人工作。

编辑:2012年的答案!似乎这仅适用于Rails 2!

在Config/Initializer中添加一个初始化器,具有类似的内容:

Rake::Task["resque:work QUEUE='*'"].invoke

未测试!

最好的方法是

ENV['QUEUE'] = "*"
Rake::Task["resque:work"].invoke

最新更新