#ruby-on-rails #heroku #resque
#ruby-on-rails #heroku #resque
Вопрос:
Мне не хочется спрашивать об этом, но я не могу понять. Когда я запускаю следующую команду, heroku console
я получаю синтаксическую ошибку. Почему?
QUEUE='*' rake jobs:work
Ошибка:
SyntaxError: compile error
/home/heroku_rack/lib/console.rb:150: syntax error, unexpected tIDENTIFIER, expecting $end
QUEUE='*' rake jobs:work
^
/home/heroku_rack/lib/console.rb:150
/home/heroku_rack/lib/console.rb:150:in `call'
/home/heroku_rack/lib/console.rb:28:in `call'
/usr/ruby1.8.7/lib/ruby/1.8/monitor.rb:242:in `synchronize'
Мое решение.файл rake содержит псевдоним task "jobs:work" => "resque:work"
, и команда была скопирована дословно из истории консоли, поэтому я знаю, что она выполнялась ранее.
Комментарии:
1. вы пробовали с
QUEUE="*"
?2. ДА. Возникает та же ошибка. Также перезапустил приложение.
3. Работает ли это в режиме разработки или это только на heroku?
4. Привет, Нил. Только на Heroku. Он отлично работает при разработке на моей машине
Ответ №1:
Консоль Heroku — это консоль Rails, а не оболочка bash.
Вы пытаетесь выполнить QUEUE='*' rake jobs:work
, как если бы это была действительная команда Ruby, что, конечно, не так.
Возможно, вы пытаетесь это сделать?(прокрутите вниз до «запустить что-нибудь», где говорится о Resque).
Комментарии:
1. Дело в том, что я нахожусь в стеке bamboo, который не поддерживает Procfile.
2. Вы могли бы изменить стеки: devcenter.heroku.com/articles/stack#migrating_to_a_new_stack
Ответ №2:
Если вы используете что-либо, кроме Cedar stack, то вы ограничены использованием DelayedJob на Heroku.
http://devcenter.heroku.com/articles/delayed-job
http://devcenter.heroku.com/articles/queueing#background_jobs_on_herokubamboo
Комментарии:
1. Я боялся этого. Придется обновить Ruby.