#ruby-on-rails #ruby #rake #resque #god
#ruby-on-rails #ruby #рейк #resque #боже
Вопрос:
Я получаю следующую ошибку в log / resque-0.log:
rake aborted!
non-absolute home
/srv/myapp/current/Rakefile:4
Если я запускаю worker вручную, используя ту же команду, что и God, она запускается просто отлично:
QUEUE=* RAILS_ENV=production /usr/bin/rake -f /srv/myapp/current/Rakefile environment resque:work
Я пробовал запускать эту команду от имени пользователя rails и пользователя root (под которым работает God). Есть идеи?
Комментарии:
1. Похоже, проблема может быть в вашем файле Rakefile, пожалуйста, опубликуйте свой файл Rakefile и скрипт god.
Ответ №1:
у вас есть дополнительная среда между «Rakefile» и «resque»
Боже мой, скрипты обычно выглядят так:
rails_env = ENV['RAILS_ENV'] || "development"
rails_root = ENV['RAILS_ROOT'] || "/path/to/app"
God.watch do |w|
w.name = "resque-task"
w.group = 'resque'
w.interval = 30.seconds
w.start = "/path/to/rake -f #{rails_root}/Rakefile resque:work QUEUE=* RAILS_ENV=#{rails_env}"
w.uid = 'gazler'
w.gid = 'gazler'
Комментарии:
1. Похоже, проблема не устранена. Он отлично работает, когда я запускаю его на сервере через SSH, но он терпит неудачу, когда бог пытается его запустить (та же ошибка).
Ответ №2:
Итак, часть проблемы заключается в том, что shadow_puppet пытается разрешить ваш path, но если вы на самом деле пытаетесь использовать shadow_puppet или что-то еще, что пытается расширить path на ~ (например, Capistrano), обязательно включите:
w.env = {"HOME" => "/users/home/dir"}
Это устранило эту проблему в моей ситуации (ограничение доступа к работнику resque, контролируемому богом).
Ответ №3:
Хорошо, оказывается, мне просто пришлось удалить shadow_puppet из моего Gemfile. Не уверен, почему у меня это было там в первую очередь, возможно, это был пережиток старой версии Moonshine.