当我启动开发服务器来测试我在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'
我不明白为什么我会得到错误,另外为什么它以前加载和工作但不再。我在这里错过了什么?
答案 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)