2014-03-25 78 views
1

我使用魯弗斯調度通過下面的代碼安排在特定日期的工作:Rails的魯弗斯調度作業返回nil

job = Rufus::Scheduler.singleton.schedule_at @post.read_attribute(:parse_time).to_s do 

    end 

我然後保存該作業的ID在我的崗位類

@post.update_attribute(:job_id, job.id) 

但是,如果我試圖通過調用再次訪問該作業:

Rufus::Scheduler.singleton.job(@post.read_attribute(:job_id)).unschedule 

我得到一個錯誤,因爲這項工作是零。如果我嘗試通過調用以下方式查看調度程序的作業:

Rufus::Scheduler.singleton.jobs 

我得到一個空白數組。任何人都可以解釋爲什麼我的工作不是 正確保存 保存/正在追蹤?

這是我的調度程序的初始化文件。我必須做任何事情來啓用單身人士嗎?或者是否自動帶上導軌:

require 'rufus-scheduler' 

# Create singleton rufus scheduler 
s = Rufus::Scheduler.singleton 
+0

您正在省略重要信息。什麼版本的Ruby? rufus調度程序的版本是什麼?你在哪個服務器上運行Rails? (乘客,Webrick,薄,獨角獸)。請明確點。 – jmettraux

+0

我使用WEBrick服務器運行Ruby v2.0.0p195,rufus-scheduler 3.0.7。當你說「把工作留在記憶中」時,你的意思是什麼?這與拯救工作有何不同?有沒有推薦的方法來做我想做的事情?感謝您的幫助 –

+0

我的意思是rufus-scheduler不會將作業保存到文件,數據庫或cookie jar中。 – jmettraux

回答

1

rufus-scheduler不會保留觸發的作業。

你的工作可能已經觸發,並已消失。

+0

通過觸發作業,您是指已安排的作業,還是已安排並隨後由調度程序運行的作業?我正在嘗試獲取已安排但尚未運行的工作的參考。謝謝您的幫助! –

+1

「觸發」我的意思是「調度程序已經安排並隨後運行的作業」。已安排但尚未運行的作業應該可見(如果您與調度程序處於相同的Ruby進程並且處理正確的調度程序實例)。 – jmettraux

+0

我想我正在解決錯誤的調度程序實例,因爲作業還沒有觸發,但沒有找到,當我嘗試通過從Rufus :: Scheduler進行搜索時,發現它們是id: –