Ruby on rails “如何运行”;rake resque:work QUEUE=*";Rails服务器何时启动?
我已正确安装resque,但要处理所有需要运行的队列Ruby on rails “如何运行”;rake resque:work QUEUE=*";Rails服务器何时启动?,ruby-on-rails,ruby-on-rails-3,rake,resque,Ruby On Rails,Ruby On Rails 3,Rake,Resque,我已正确安装resque,但要处理所有需要运行的队列 rake resque:work QUEUE='*' 问题是我需要保持终端窗口打开,否则resque:work将无法工作 你知道每次我运行“rails服务器”时自动运行rake命令的方法吗 我在本地主机上 lib/tasks/resque.rake require 'resque/tasks' task "resque:setup" => :environment do ENV['QUEUE'] = "*" end 编辑:
rake resque:work QUEUE='*'
问题是我需要保持终端窗口打开,否则resque:work将无法工作
你知道每次我运行“rails服务器”时自动运行rake命令的方法吗
我在本地主机上
lib/tasks/resque.rake
require 'resque/tasks'
task "resque:setup" => :environment do
ENV['QUEUE'] = "*"
end
编辑:2012年的答案!似乎这只适用于Rails 2 在config/initializers中添加一个初始值设定项,如下所示:
Rake::Task["resque:work QUEUE='*'"].invoke
没有测试 最好的方法是
ENV['QUEUE'] = "*"
Rake::Task["resque:work"].invoke
您可以使用这样的gem来调用所有其他任务,而不是调用invoke函数。 如果您希望有一个基本上与平台无关的解决方案,并且在部署到云中时,这将非常有用。 您的Procfile可以包含以下内容:
web: bundle exec thin start -p $PORT
worker: bundle exec rake resque:work QUEUE=*
clock: bundle exec rake resque:scheduler
来源:
现在,要启动服务器,您只需发出foreman start命令,该命令将派生子线程来执行单独的工作。如果您不想在resque打开的情况下保持终端,您可以尝试在后台运行resque。谢谢,这太完美了@AlexeySukhoviy你知道如何避免每次我重新启动服务器时重新运行它吗?顺便说一句。如果你在后台运行它,你可以通过kill-9命令将其作为进程终止来停止它。其中,pid是resque过程的pid。但出于开发目的,我建议您不要在后台运行resque。对我来说,最好将它放在另一个终端中,只有在我对resque进程运行的代码做了一些更改后才能重新启动它。也许你能帮我解决这个问题?我知道,我只是为登陆此处的用户指定。:)