rvm monit delayed_job - PullRequest
       25

rvm monit delayed_job

2 голосов
/ 09 июня 2011

Я пытаюсь запустить delayed_job, используя monit, но он не запускается как пути rvm (локальная установка rvm для каждого пользователя) недоступна команде. Мое приложение представляет собой приложение rails2 с упаковщиком. Монит не может найти упаковщик. У кого-нибудь есть какие-либо предложения относительно того, как я могу рассказать о путях rvm для мониторинга?

Я получаю ошибку

[rails@x-rws1 current]$ monit start delayed_job -c config/delayed_job.monitrc 
'delayed_job' start: /usr/bin/env
'delayed_job' failed to start
no such file to load -- bundler
/usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
/usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
/home/rails/public_html/myapp/current/config/../config/preinitializer.rb:3
/home/rails/public_html/myapp/current/config/boot.rb:28:in `load'
/home/rails/public_html/myapp/current/config/boot.rb:28:in `preinitialize'
/home/rails/public_html/myapp/current/config/boot.rb:10:in `boot!'
/home/rails/public_html/myapp/current/config/boot.rb:123
/home/rails/public_html/myapp/current/config/environment.rb:12:in `require'
/home/rails/public_html/myapp/current/config/environment.rb:12
/home/rails/public_html/myapp/current/script/delayed_job:3:in `require'
/home/rails/public_html/myapp/current/script/delayed_job:3

Мой конфиг / delayed_job.monitrc

set daemon  120

check process delayed_job with pidfile /home/rails/public_html/myapp/shared/pids/delayed_job.pid
  start program = "/usr/bin/env RAILS_ENV=staging /home/rails/public_html/myapp/current/script/delayed_job start"
  stop program = "/usr/bin/env RAILS_ENV=staging /home/rails/public_html/myapp/current/script/delayed_job stop"

и исполняемый файл script / delayed_job

#!/usr/bin/env ruby

require File.expand_path(File.join(File.dirname(__FILE__), '..', 'config', 'environment'))
require 'delayed/command'
Delayed::Command.new(ARGV).daemonize

Ответы [ 2 ]

9 голосов
/ 13 декабря 2011

'rvm -S' не работает для меня.

Инструкции по http://matthew.mceachen.us/blog/howto-make-system-wide-rvm-installations-work-with-cron-monit-delayed_job-and-passenger-1021.html сделали.

check process delayed_job.0
  with pidfile /u/apps/adgrok/shared/pids/delayed_job.0.pid
  start program = "/usr/local/bin/rvm-shell -c 'RAILS_ENV=production /u/apps/adgrok/current/script/delayed_job start -i 0'" as uid deploy and gid deploy
  stop program = "/usr/local/bin/rvm-shell -c 'RAILS_ENV=production /u/apps/adgrok/current/script/delayed_job stop -i 0'" as uid deploy and gid deploy
  if 2 restarts within 15 cycles then timeout

Есть также заслуживающая внимания ссылка на темуобсуждения с автором RVM о мониторе: http://groups.google.com/group/rubyversionmanager/browse_thread/thread/d1a6c1f6396a8bf6/51afece4c8943912?#51afece4c8943912

3 голосов
/ 29 июля 2011

Если у вас уже есть нормально работающий монитор с другими сервисами и вам просто нужно добавить демон delayed_job для среды rvm, вы можете попробовать использовать этот файл conf (он мне подходит)

/ etc / monit/conf.d/delayed_job.conf (у меня есть сервер Ubuntu)

check process delayed_job with pidfile /{project_folder}/tmp/pids/delayed_job.pid
start program = "RAILS_ENV=production rvm -S /{project_folder}/script/delayed_job start"
stop program = "RAILS_ENV=production rvm -S /{project_folder}/script/delayed_job stop"

Здесь rvm -S команда позволяет сценарию запускаться в текущей среде rvm ruby ​​

Вы можетепопробуйте запустить демон с помощью команды

$ RAILS_ENV=production rvm -S /{project_folder}/script/delayed_job start

, и, если демон запустится (проверьте, изменив ли последнее слово на «статус»), у вас хорошие шансы с файлом delayed_job.conf

не забудьте проверить, что pid-файл тоже был создан в папке tmp/pids/

...