rails 3.0.9 (ruby 1.9.2) でdelayed_jobを動作させるのに苦労しています。私が実行に成功した唯一の方法は、コマンド rake jobs:work を手動でテープに記録することです。しかし、レールアプリケーションの起動時に自動的に開始されるようにしたいです。
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
コマンド「sudo monit startdelayed_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 monitdelayed_job
start program / stop program 行に rvm -S を追加します。しかし、それでもエラーで失敗します: rvm コマンドが見つかりません
私のrvmディレクトリは私のホームディレクトリ/home/me/.rvmにあります
( sudo changes PATH -Why? )で回避策を見つけて、追加して PATH 環境変数を変更しようとしました
/usr/bin/env PATH=/home/me/.rvm/bin:$PATH
コマンド「sudo monit startdelayed_job」が成功しました!そして労働者は始めました。しかし、問題は次のとおりです。sudo /etc/init.d/monit start を起動し、syslog を見ると、まだ「delayed_job」が起動に失敗しました。
したがって、さらに調査する方法、monit の詳細なエラーを取得する方法がわかりません。