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

rake resque:work QUEUE='*'

问题是我需要保持终端窗口打开,否则resque:work无法正常工作。

每次我运行“rails服务器”时,您知道一种自动运行该rake命令的方法吗?

我在上本地主机

lib/tasks/resque.rake
require 'resque/tasks'

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

最佳答案

您可以使用像foreman这样的gem来调用所有其他任务,而不是调用invoke函数。
如果您希望拥有一个在很大程度上与平台无关的解决方案,并且在部署到云中时,这将很有用。
您的Procfile可以具有以下内容:

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

资料来源:introduction to foreman

现在启动服务器,您只需要发出foreman start命令,该命令会派生子线程来执行单独的工作。

关于ruby-on-rails - Rails服务器启动时如何运行 "rake resque:work QUEUE=*"?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13326843/

10-15 13:00