Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails “如何运行”;rake resque:work QUEUE=*";Rails服务器何时启动?_Ruby On Rails_Ruby On Rails 3_Rake_Resque - Fatal编程技术网

Ruby on rails “如何运行”;rake resque:work QUEUE=*";Rails服务器何时启动?

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 编辑:

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

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进程运行的代码做了一些更改后才能重新启动它。也许你能帮我解决这个问题?我知道,我只是为登陆此处的用户指定。:)