我在運行DJ時遇到了很多問題。主要是,我無法運行任何更改數據庫的方法delayed_job。我在本地測試了一個sqlite3數據庫,DJ 3.0.0,我甚至添加了delayed_job_active_record gem。Delayed_job不會對數據庫進行任何更改
我有,例如,試圖在後臺運行下面的方法:
@user = User.find(1)
@user.delay.recorder_method
如果這種方法是:
def recorder_method
self.relevant_field +=1
update
end
這將創建一個延遲的工作,以及處理程序具有適當的信息爲用戶和適當的方法名稱。該腳本運行作業,認爲它已成功,並從delayed_job表中刪除該記錄。但用戶不變(數據庫不變)。
究竟哪裏出了問題?需要注意的是,當我運行相同的代碼從鐵軌控制檯(「@ user.delay.recorder_method」),它的工作原理..不同的是由軌道控制檯呼叫建立的處理程序是:
--- !ruby/object:Delayed::PerformableMethod
object: !ruby/ActiveRecord:User
attributes:
... (attribute info and rest of file)
儘管一個由呼叫控制器中的作用產生在是:在兩件事1線(VS紅寶石/結構紅寶石/對象..前者作品而後者沒有)
--- !ruby/struct:Delayed::PerformableMethod
object: !ruby/ActiveRecord:User
attributes:
不差。也許這是一些可能表明發生了什麼問題的信號。任何想法,任何人?
這似乎是有前途的,因爲處理程序現在說ruby/object。但是它不會執行這個任務,給出一個錯誤「{當你沒有想到它的時候,你有一個零對象! 你可能預期了一個Array實例 評估nil.delete時發生錯誤」軌道控制檯和控制器都啓動延遲工作。想法? – jay 2012-03-14 05:19:46
@jay,我不清楚你在說什麼。你究竟是爲了得到那個錯誤而跑步的?爲什麼任務不會執行?軟件包更新? @ model.delay.method?還有別的嗎?你到底改變了什麼? – 2012-03-14 17:06:29
哦..抱歉缺乏特異性。我運行了你建議的更新。然後我嘗試運行model.delay.method,並創建了一個延遲的作業。它現在在處理程序字段(ruby/object)中有正確的起始行,並且它試圖運行作業 - 給出零對象錯誤。如果我嘗試從rails控制檯(之前的工作)運行相同的model.delay.method,現在不能正常工作。我只運行了你建議的更新。 – jay 2012-03-14 18:27:16