Запуск delayed_job под Монит с Ubuntu - PullRequest
1 голос
/ 27 августа 2011

Я пытаюсь заставить delayed_job работать под рельсами 3.0.9 (ruby 1.9.2).Единственный способ, которым мне удалось запустить, - это записать вручную команды rake jobs: work.Но я хочу, чтобы он запускался автоматически при запуске приложения rails.

Я установил monit под Ubuntu и настроил его для запуска файла, расположенного в моем приложении.Эта ошибка выглядит следующим образом:

check process delayed_job with pidfile /home/me/myapp/tmp/pids/delayed_job.pid
start program = "/home/me/myapp/script/delayed_job start"
stop program = "/home/me/myapp/script/delayed_job stop" 

И я добавил параметр среды в файл сценария delayed_job:

#!/usr/bin/env ruby

    ENV['RAILS_ENV'] = "development"
    require File.expand_path(File.join(File.dirname(__FILE__), '..', 'config', 'environment'))
    require 'delayed/command'
    Delayed::Command.new(ARGV).daemonize

Когда я запускаю команду "sudo monit start delayed_job", я получаю следующееошибка:

/usr/lib/ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require': no such file to load -- bundler/setup (LoadError)

Так что я думаю, это потому, что sudo использует неправильную версию среды ruby. Тогда я попытался найти решение: rvm monit delayed_job

, добавивrvm -S в строке запуска программы / остановки программы.Но он все еще не работает с ошибкой: команда rvm не найдена

мой каталог rvm находится в моем домашнем каталоге /home/me/.rvm

Я пытался найти обходные пути в (sudo изменяет PATH - почему? ) для изменения переменной среды PATH путем добавления

/usr/bin/env PATH=/home/me/.rvm/bin:$PATH

Команда "sudo monit start delayed_job" выполнена успешно!и рабочий начал.Но проблема заключается в следующем: когда я запускаю sudo /etc/init.d/monit start и когда я смотрю в системный журнал, я все равно получаю 'delayed_job' не удалось запустить

Так что я нене знает, как исследовать больше, как получить больше подробных ошибок для monit.

Ответы [ 2 ]

1 голос
/ 27 сентября 2014

Это единственная строка, которая работает для меня, которая правильно читает ENV

start program = "/usr/local/rvm/bin/rvm-shell -c 'cd /var/www/[APP]/current/; RAILS_ENV=production bundle exec bin/delayed_job start'"

Надеюсь, это поможет!

1 голос
/ 27 августа 2011

Мне наконец удалось решить эту проблему.Я изменил файл monit следующим образом:

check process delayed_job with pidfile /home/me/myapp/tmp/pids/delayed_job.pid
start program = "/bin/su - me -c 'cd /home/me/myapp/; script/delayed_job start'"
stop program = "/bin/su - me -c 'cd /home/me/myapp/; script/delayed_job stop'"

Я также понизил гем демонов, потому что, похоже, проблемы с последней версией.Поэтому я сейчас использую daemons v 1.0.10

Я также изменил права файла журнала /home/me/myapp/log/delayed_job.log, потому что кажется, что этобыл создан до того, как мой root и мой пользователь не имел к нему доступа (у меня были проблемы с проверкой команды "script / delayed_job start" с пользователем "me")

...