2011-08-09 61 views
1

我使用Ruby on Rails的3.0.9,我試圖來設置delay_job寶石爲我的Web應用程序,以發送電子郵件這種方式:設置延遲喬布斯寶石

Notifier.delay.send_email(@user) 

除了寫在創業板正式文件中,開始我的「延遲就業」我應該使用下面的代碼行

$ RAILS_ENV=production script/delayed_job start 
$ RAILS_ENV=production script/delayed_job stop 

# Runs two workers in separate processes. 
$ RAILS_ENV=production script/delayed_job -n 2 start 
$ RAILS_ENV=production script/delayed_job stop 

的一個或調用rake jobs:work任務。

在生產模式我更喜歡使用RAILS_ENV=...語句之一,但我想知道哪裏(即,在哪個文件)我要補充一點,代碼,以便開始在應用程序啓動工人(BTW :目前我沒有使用Capistrano來部署我的應用程序)。

更多的,我想知道「工作人員」到底是什麼,以及我的VPS託管(運行Ubuntu 10.04 LTS)可以運行多個服務器,或者知道我的服務器可以運行多少個工人。

最後,我想知道我可以在config/initializers/delayed_job.rb文件中添加哪些選項,以及是否有關於延遲作業gem的一些建議或技巧。

+0

你是什麼意思的「自動化」的初始化過程「?你的意思是啓動應用程序啓動的工作人員至於VPS和工人的要求我們不能回答,因爲我們不知道工人正在運行什麼和你有什麼類型的VPS。請張貼一些代碼。 –

+0

@Devin M - 是的,我的意思是啓動應用程序啓動時的工作人員。我應該發佈什麼代碼,因爲我沒有在我的應用程序中詢問關於特定編碼問題的問題? – Backo

+0

您問過您可以運行多少工人,這取決於您在工人中運行的代碼類型。就申請開始,讓我爲你解答一個問題。 –

回答

1

要在應用程序啓動時啓動您的工作人員,我只需從initalizer調用正確的命令。做到這一點的代碼是這樣:

system "RAILS_ENV=production #{Rails.root.join('script','delayed_job')} stop" 
system "RAILS_ENV=production #{Rails.root.join('script','delayed_job')} -n 2 start" 

的路徑可能是有點過,有最有可能是一個更清潔的方式做到這一點,但我不知道任何東西把我的頭頂部。

+0

例如,如果我重新啓動Apache2服務器,我的工作人員將停止工作,然後重新啓動或者這些服務器將連續運行(即它們重疊)?並且,在引用其他問題時,我可以在「延遲作業」初始化程序文件中添加哪些選項? – Backo

+0

你的工人會繼續奔跑,直到他們自然死亡。如果應用程序重新啓動,但工人仍在運行時將被停止並重新啓動,以防止多個工人運行。 –

+0

只要設置在'Gory Details'標題下看延遲作業的自述文件 –