2011-06-09 47 views
2

我試圖運行使用monit的delayed_job,但它無法作爲rvm的路徑(本地rvm安裝每個用戶)運行對命令不可用。我的應用程序是一個捆綁器的rails2應用程序。 Monit無法找到捆綁商。有沒有人有任何建議,我怎麼可以告訴關於監視的RVM路徑?rvm monit delayed_job

我收到錯誤

[[email protected] 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 

我的config/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" 

和腳本/ 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 

回答

3

如果你已經工作正常的monit與其他服務,只需要爲rvm環境添加delayed_job守護進程即可嘗試使用此conf文件E(我的作品)

/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下運行腳本紅寶石環境

你可以嘗試與啓動守護

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

的命令,並且守護進程會開始比你有delayed_job.conf文件

很好的機會,不要忘記檢查,如果PID文件已在tmp/pids/文件夾中創建過

(與最後一個字改爲「狀態」檢查)
9

'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約的monit作者:http://groups.google.com/group/rubyversionmanager/browse_thread/thread/d1a6c1f6396a8bf6/51afece4c8943912?#51afece4c8943912

+0

這對我的作品!現在嘗試了幾個小時的許多不同的解決方案。 – Frexuz 2012-01-14 21:33:55