2016-09-25 1 views
0

私はrakeタスクを持っています。これは、gemを使用するたびに毎時起動されます。ステージングサーバーで無効にしたいのですが、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時から21時59分まで1時間ごとに実行したいが、それは24時間365日働いている。

+0

「Rails.env.production?」のチェックがうまくいかなかったことは驚きです(これは私の提案だったはずです)。それは何時も「何時でも」生産環境下でレーキタスクを何とか実行することができることを示唆しているので、恐ろしいことです。 rakeタスクで 'Rails.env'と' ENV ['RAILS_ENV'] 'を印刷して、あなたが得たものを見ることができますか? – gmcnaughton

+0

問題が見つかりました。環境は何らかの理由でハードコードされていました。だから私の質問の最初の部分が答えられます。今私はcronが何が問題なのかを理解しようとしています。 – enjaku

+0

それはハードコードされていませんでした、それはちょうど設定されている可能性が高いです:)あなたのcronのものの私の編集を参照してください –

答えて

0

問題が発見されました。環境は何らかの理由でハードコードされていました。だから私の質問の最初の部分が答えられます。今私はcronが何が問題なのかを理解しようとしています。

環境変数の値が変更された後、cronタスクが期待どおりに動作し始めました。すべては今大丈夫です。

1

あなたは@environment変数を使用してschedule.rbでENVを確認することができます。

every "10 7-21 * * *" do 
    rake 'checks:test_visible_response' if @environment == 'production' 
end 
関連する問題