2012-12-14 31 views
0

我的應用程序的設置方式是我們使用不同的數據庫連接,每個子域使用不同的環境。延遲作業做你期望的(我猜),並將作業插入到delayed_jobs表時,使用該請求的當前環境(以及因此數據庫連接)。強制延遲作業以使用單獨的數據庫連接

問題是DJ無法處理來自所有這些不同表格的作業,所以我試圖強制DJ只使用一個數據庫,尤其是爲其設置數據庫。我試過this,但它不起作用,我不知道接下來要做什麼。

任何指針/建議將非常讚賞,真的在我的智慧結束與此。

嘗試代碼:

Delayed::Job.class_eval do 
    establish_connection ActiveRecord::Base.configurations["delayed_job"] 
end 

連接到數據庫是在before_filterApplicationController完成。

+0

你能描述一下你的環境嗎?即多少個Web服務器,延遲的作業服務器,您如何在每個服務器中分配數據庫,並顯示establish_connection代碼。 – aceofspades

+0

1個Web服務器,1個應用程序,1個延遲作業服務器。連接到數據庫是在應用程序控制器的before_filter中完成的。 –

+0

可能重複[如何強制延遲\ _job使用特定的數據庫連接?](http://stackoverflow.com/questions/6479039/how-can-i-force-delayed-job-to-use-a -specific-db-connection) –

回答

1

ApplicationController中爲每個域建立連接的代碼只會在每個請求的應用程序服務器上發生。

將:domain屬性添加到Job類中,並在排隊作業時進行設置。在作業#執行中,建立您的數據庫連接。

+0

你已經回答了一些不完全是我問的東西,但仍值得投票。我犯了一個小學生的錯誤,我的問題中的代碼確實有效。我已要求此問題已關閉。 –