2016-04-27 5 views
1

私はWhatever gemを通して呼び出す次のクラスメソッドを持っています。 Railsコンソールからメソッドを呼び出すと、完全に機能します。 Whatever cronジョブから呼び出された場合、最初の2つのロガー呼び出しがログファイルに表示されるので、それは大丈夫と呼ばれています。しかし、第3のものはそうではない。宝石がクラスのインスタンスを認識しないときはいつでも

すべてのヘルプが

def self.check_saved_messages 

    #Code to test the method with the 'whenever' gem. 
    my_logger.warn("Scheduler fired at #{Time.now} Logger 1") 

    # 1. Grab all messages that have not been sent. 
    @messages = Array.new #Creates new array to store messages in. 

    #Stores all messages that have not been sent in @messages array. 
    my_logger.warn("Scheduler fired at #{Time.now} #{Message.all} Logger 2") #Works as Cron job 
    my_logger.warn("Scheduler fired at #{Time.now} #{Message.last} Logger 3") #Doesn't work as cron job 

    Message.where(sent: false).find_each do |message| 
       @messages.push(message) 
    end 

    # 2. Iterate through them and find the ones where the time has past to send. 
    current_time = Time.now.utc 

    #Send messages that have a send_time earlier than current time. 
    @messages.each do |message| 
     if current_time.to_i > message.send_time.to_i 
      message.send_message 
      message.send_time # Testing (working) 
     end 
    end 

end 

答えて

1

Iを高く評価しているcronジョブとしてメソッドを実行すると、クラスを認識しているようだが、「メッセージ」の個々のインスタンスを取得するためにデータベースに接続されていません

開発環境で 'いつでも'コマンドを起動すると、実際に開発データベースに接続できるようになります:-)

いつでも--update-crontab --set環境= '開発'

関連する問題