2016-09-25 20 views
0

我有一個rake任務,每當使用gem時,每小時都會啓動一次rake任務。我想在暫存服務器上禁用它,但使用if語句解決此問題的顯而易見的方式不起作用。我的代碼是:在暫存服務器上禁用rake任務

namespace :checks do 
    task test_visible_response: :environment do 
    if Rails.env.production? 
     ... 
    end 
    end 
end 

,我執行它是這樣的:

every "0 7-21/1 * * *" do 
    rake 'checks:test_visible_response' 
end 

PS:看來我也有我的cron語法問題。我希望從7:00到21:59每小時執行一次任務,但它每天24小時工作。

+0

我有點驚訝,檢查'Rails.env.production?'不起作用(這將是我的建議)。這有點嚇人,因爲它暗示''無論何時''可以在生產環境下以某種方式運行rake任務。可能想嘗試在rake任務中打印'Rails.env'和'ENV ['RAILS_ENV']'來查看你得到的結果? – gmcnaughton

+0

該問題已找到。環境由於某種原因而被硬編碼。所以我的問題的第一部分已經回答了。現在我試圖弄清楚cron有什麼問題。 – enjaku

+0

它沒有硬編碼,它很可能只是設置:)請參閱我的編輯您的cron的東西 –

回答

0

的問題已被發現。環境由於某種原因而被硬編碼。所以我的問題的第一部分已經回答了。現在我試圖弄清楚cron有什麼問題。

在環境變量值已更改之後,cron任務開始按預期工作。現在一切都好了。

1

您可以使用schedule.rb變量@environment檢查的ENV:

every "10 7-21 * * *" do 
    rake 'checks:test_visible_response' if @environment == 'production' 
end