2013-06-28 30 views
6

我正在使用每當gem運行rake任務時。 當我運行rake任務時,它在開發環境下運行,但是當它在預定時間運行時,它指的是生產環境。 如何強制在開發環境下運行預定的rake任務。 據我所知,我將不得不使用RAILS_ENV變量,但不知道該把它放在哪裏。 我認爲,這與任何時候寶石都無關。如何強制rake任務在開發環境下運行使用When when gem

回答

6

schedule.rb,您可以指定您希望計劃任務環境中運行

# config/schedule.rb 
every 1.day do 
    runner 'Model.task', :environment => 'development' 
    runner 'Model.task', :environment => 'production' 
end 
+0

您是否可以運行調度程序中的任務而無需等待時間段的通過? –

+1

你問是否可以手動運行任務(即在調度程序之外)?如果是這樣,是的。但是,如果您嘗試使用每當寶石時,您必須設置某種時間間隔 - AFAIK,最小間隔爲一秒。否則,你會不斷地同時運行你的任務......這實際上不可行/可行。 – zeantsoi

12

在任何bash型殼,你通常可以覆蓋環境,當你運行它:

RAILS_ENV=development rake task:name... 

你也可以寫一個小的腳本來爲你做到這一點:

#!/bin/sh 

export RAILS_ENV=development 

rake task:name... 

這可以根據需要適應其他外殼。

# config/schedule.rb 
set :environment, 'development' 

或者,你可以設置環境上的每個作業: