私は過去にDelayed_jobを使用しました。 Ruby 1.8.6から1.8.7にアップグレードできない古いプロジェクトがあり、遅延ジョブを使用できないため、BackgroundJobsを試しています。http://codeforpeople.rubyforge.org/svn/bj/trunk/README完了後のバックグラウンドジョブの停止
私はそれを動作させています私の仕事は走りますが、何かが正しいように見えません。私はこのようなジョブを実行する場合、例えば:
jobs = Bj.submit "echo hi", :is_restartable => false, :limit => 1, :forever => false
をそれから私はbj_jobテーブルの仕事を見て、私はそれが標準出力に「こんにちは」と一緒に完了していることがわかります。私はまた、テーブル内に1つの仕事だけを見て、それを再実行しないでください。何らかの理由で
私はこれを行う場合:
jobs = Bj.submit "./script/runner ./jobs/calculate_mean_values.rb #{self.id}", :is_restartable => false, :limit => 1, :forever => false
を期待通りにジョブが完了し、しかし、それはbj_jobテーブルに新しい行を挿入し続け、私は私のを停止するまでの方法を何度も実行しますdevサーバー。それはどのように動作するはずですか?
私はRuby 1.8.6とRails 2.1.2を使用していますが、アップグレードするオプションはありません。私はBjのプラグインフレーバーを使用しています。私はちょうどモデルが保存された後に一度のプロセスを実行する必要があるので、私はそれがこのように直接スクリプト/ランナーを使用して作業してい
:
system " RAILS_ENV=#{RAILS_ENV} ruby #{RAILS_ROOT}/script/runner 'CompositeGrid.calculate_values(#{self.id})' & "
しかし、私は何かをやっているかどうかを知りたいですバックグラウンドジョブで間違っていた
今後も同様の問題を抱えている他の人に恩恵を受けるように、自分のソリューションを投稿する時間をとってくれてありがとう! – vonconrad