2011-08-26 77 views
1

我很努力得到在rails 3.0.9(ruby 1.9.2)下工作的delayed_job。我成功運行的唯一方法是將命令rake作業磁帶化:work。 但我希望在rails應用程序啓動時自動啓動它。運行delayed_job在與Ubuntu的監視下

我在ubuntu下安裝了monit,我將它配置爲啓動位於我的應用程序中的文件。這種失敗的樣子:

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 

當我運行命令「命令的monit開始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的使用錯誤版本的紅寶石環境 的話,我試過的解決方案: rvm monit delayed_job

通過在啓動程序/停止程序行中添加rvm -S。 但它仍然與錯誤而失敗:找不到RVM命令

我RVM目錄位於我的家目錄/home/me/.rvm

我試圖找到解決方法中(sudo changes PATH - why?)改變路徑通過添加環境變量

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

命令「sudo monit start delayed_job」成功!工人開始了。 但問題是:當我啓動須藤/etc/init.d/monit開始,當我看向系統日誌我仍然得到「delayed_job的」啓動失敗

所以我不知道如何調查更多,如何獲得更詳細的monit錯誤。

回答

1

我終於成功地解決了這個問題。 我修改了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'" 

我也調降守護寶石,因爲它似乎有與最新版本的問題。所以,我現在使用守護v 1.0.10

我還修改了日誌文件/home/me/myapp/log/delayed_job.log的權利,因爲它似乎一點是我的根之前創建和我的用戶有沒有打開(我有問題,「我」的用戶測試命令「腳本/ delayed_job的開始」)

1

這是唯一爲我工作,妥善

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

希望它有幫助!