启动开发服务器时启动resque worker

时间:2013-03-28 00:01:50

标签: ruby-on-rails redis resque

当我启动开发服务器来测试我在resque调度程序中的新cron作业时,我想启动我的工作人员,所以我在启动dev服务器时运行此命令 -

QUEUE=* rake environment resque:work rails s

之前它对我有用,如果我reading their documentation correctly仍然可以工作。

但是我挂断电源后中断它后会出现以下错误 -

^Crake aborted!
Don't know how to build task 'rails'

这是我在键盘中断并使用--trace

运行它后得到的结果
** Invoke environment (first_time)
** Execute environment
** Invoke resque:work (first_time)
** Invoke resque:preload (first_time)
** Invoke resque:setup (first_time)
** Invoke environment
** Execute resque:setup
** Execute resque:preload
** Invoke resque:setup
** Execute resque:work
^Crake aborted!
Don't know how to build task 'rails'

我不明白为什么我会得到错误,另外为什么它以前加载和工作但不再。我在这里错过了什么?

2 个答案:

答案 0 :(得分:3)

您确定自己设法在某个时间成功运行此命令吗

QUEUE=* rake environment resque:work rails s

因为我知道rails s的方式是rails命令列表而不是rake任务

你可以运行连续的rake分隔空格,比如

QUEUE=* rake environment rake1 rake2 rake3

但你无法运行 rake和rails命令,就像你上面提到的那样

我从上面的跟踪中看到rake( resque rake )现在正在运行而不是传递第二个rake,你指定了 rails命令来启动服务器rake是考虑到作为rake任务(这不是真的)

我相信你正在寻找这个

QUEUE=* rake environment resque:work && rails s

但是我不相信你提到的东西会工作,请告诉我这里是否存在冲突

希望有意义

答案 1 :(得分:3)

这样更好:

BACKGROUND=yes QUEUE=* PIDFILE=./tmp/resque.pid bundle exec rake environment resque:work

然后:

rails s

如果您需要停止工作人员:

kill -QUIT $(cat ./tmp/resque.pid)