我以前使用過Delayed_job。我有一箇舊的項目運行在服務器上,我無法從Ruby 1.8.6升級到1.8.7,因此無法使用延遲作業,所以我試圖BackgroundJobs http://codeforpeople.rubyforge.org/svn/bj/trunk/READMEBackgroundJobs完成後停止作業
我讓它工作以便我的工作能夠順利進行,但有些事情看起來並不正確。例如,如果我像這樣運行工作:
jobs = Bj.submit "echo hi", :is_restartable => false, :limit => 1, :forever => false
然後我看到bj_job表中的工作,我看到它一起完成在標準輸出「喜」。我也看到表中只有一個工作,它不會重新運行它。
出於某種原因,如果我這樣做:
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 2011-01-08 00:58:46