過去にDelayed_jobを使用しました。Ruby 1.8.6から1.8.7にアップグレードできないサーバーで実行されている古いプロジェクトがあるため、Delayed Jobを使用できないため、BackgroundJobshttp ://codeforpeople.rubyforge.orgを試しています。 / svn / bj / trunk / README
私は自分の仕事が実行されるようにそれを機能させていますが、何かが正しくないようです。たとえば、次のようにジョブを実行すると、次のようになります。
jobs = Bj.submit "echo hi", :is_restartable => false, :limit => 1, :forever => false
次に、bj_jobテーブルにジョブが表示され、stdoutの「hi」とともに完了したことがわかります。また、テーブルには1つのジョブしか表示されておらず、再実行されません。
私がこれを行う場合、何らかの理由で:
jobs = Bj.submit "./script/runner ./jobs/calculate_mean_values.rb #{self.id}", :is_restartable => false, :limit => 1, :forever => false
ジョブは引き続き期待どおりに完了しますが、bj_jobテーブルに新しい行が挿入され続け、開発サーバーを停止するまでメソッドが何度も実行されます。それはそれがどのように機能することになっているのですか?
Ruby1.8.6とRails2.1.2を使用していますが、アップグレードするオプションがありません。私はBjのプラグインフレーバーを使用しています。
モデルを保存した後、プロセスを1回実行するだけでよいので、次のようにスクリプト/ランナーを直接使用してプロセスを実行します。
system " RAILS_ENV=#{RAILS_ENV} ruby #{RAILS_ROOT}/script/runner 'CompositeGrid.calculate_values(#{self.id})' & "
しかし、私がバックグラウンドジョブで何か間違ったことをしているのかどうか知りたいのですが、