我一直試圖讓DelayedJob在後臺運行一些用戶定義的方法。對於此測試情況下,我在一個輔助定義了以下方法:Delayed_job不會運行用戶定義的方法
def test_case
u = User.new
u.first_name = "JimBob"
u.last_name = "joe"
u.email = "[email protected]"
u.password = "sailsJ123"
u.password_confirmation = "sailsJ123"
u.save
end
然後,在控制器動作,我定義:
def action_name
#whatever it does outside of this
test_case
end
這導致test_case創建新用戶時的動作這裏是跑。如果我儘量拖延這項工作,我將其更改爲:
def action_name
#whatever it does outside of this
self.delay.test_case
end
這將導致delayed_job的被創建,但有一些跡象表明,我這樣做是錯誤的:具體而言,在delayed_job的表格處理程序包含了所有在action_name中的其他地方加載的信息(在這種情況下是一個大約50000個字符的大文件),而不僅僅是指定運行test_case或其他東西的簡單處理程序。
如果我改變這個局面,保持測試,我試圖做:
def action_name
#whatever it does outside of this
u = User.new
u.first_name = "JimBob"
u.last_name = "joe"
u.email = "[email protected]"
u.password = "sailsJ123"
u.password_confirmation = "sailsJ123"
u.delay.save
end
這成功地創建了一個DJ,正如預期的,它加載的處理程序指定細節(例如u.name => 「JimBob」 ......)。但是,當作業運行時,不會創建新用戶。我甚至試圖切換它只是爲了摧毀一個用戶(我可能創建一個用戶與DJ可能很難,考慮到密碼字段的處理方式),但這是行不通的。
SO長話短說:
- 我怎樣才能得到DJ正常運行背景的方法呢?
- 在創建看起來很簡單的延遲作業的情況下,如何不對數據庫進行更改?
什麼是DJ處理程序對象和方法名稱? – AMIT 2012-03-14 05:27:06
@AMIT它只是「延遲工作」的縮寫。 – Roshan 2018-01-23 10:04:06