2016-02-24 6 views
0

Я пытаюсь запустить замедленное работу в производстве (Elastic Beanstalk, AWS) с помощью $ RAILS_ENV=production bin/delayed_job start, однако я получаю следующее сообщение об ошибке разрешения:Как запустить delayed_job в процессе производства?

/opt/rubies/ruby-2.2.3/lib/ruby/gems/2.2.0/gems/delayed_job-4.1.1/lib/delayed/command.rb:85:in `mkdir': Permission denied @ dir_s_mkdir - /var/app/current/tmp/pids (Errno::EACCES) 
    from /opt/rubies/ruby-2.2.3/lib/ruby/gems/2.2.0/gems/delayed_job-4.1.1/lib/delayed/command.rb:85:in `daemonize' 
    from bin/delayed_job:5:in `<main>' 

Это, вероятно, не проблема с запаздывающим Иова, но я не мог я действительно найду ответ в любом месте этого разрешения, и я надеюсь, что кто-то может понять, что я могу сделать, чтобы он работал на производстве.

Любая помощь очень ценится! Благодаря!

ответ

3

Это скорее недостающая папка, чем проблема с разрешением. Вы должны войти на удаленный с помощью ssh и запустить там:

sudo mkdir -p /var/app/current/tmp/pids 
sudo chmod +xw /var/app/current/tmp/pids 

В случае подачи паранойю, один может также chown пользователю, что на самом деле работает код рубин, но в данном случае это не является необходимым, так как это все о хранении PID.

+0

Спасибо, я попытался это, а затем попытался запустить delayed_job снова, но с другой ошибкой доступа: /opt/rubies/ruby-2.2.3/lib/ ruby/gems/2.2.0/gems/daemons-1.2.3/lib/daemons/pidfile.rb: 92: in 'initialize': Permission denied @ rb_sysopen - /var/app/current/tmp/pids/delayed_job.pid (Errno :: EACCES) Любая идея, что я могу здесь сделать, или вы могли бы объяснить, как я могу использовать 'chown' для решения этой проблемы? Не так много из командной строки! –

+0

В этом случае вам не нужно «chown». Кажется, у вас уже есть файлы pid. Попробуйте запустить 'sudo rm -rf/var/app/current/tmp/pids/*' и перезапустить 'delayed_job'. Это должно помочь. – mudasobwa

+0

Я сделал вашу первую команду mkdir, а затем chown afterwards, и именно это заставило ее работать. Спасибо! –

2
  1. чек, который пользователь delay_job начать с
  2. проверка /var/app/current/tmp/pids разрешения, разрешение должно быть пригодным для пользователя.
  3. если pids не существует, проверьте /var/app/current/tmp разрешения