Бог не запускает Resque workers: рейк прерван! неабсолютный дом

#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.