2016-04-27 10 views
1

erkennt, habe ich die folgende Klassenmethode, die ich durch den Whatever-Edelstein aufrufen. Wenn ich die Methode von der Rails-Konsole aus anrufe, funktioniert es perfekt. Wenn es aus dem Cron-Job "Whatever" aufgerufen wird, werden die ersten beiden Logger-Aufrufe in der Protokolldatei angezeigt. Daher weiß ich, dass es OK heißt. Das dritte jedoch nicht.Immer wenn Juwel nicht Instanz der Klasse

Es scheint, dass die Methode als cron-Job die Ausführung der Klasse erkennt, ist aber nicht mit der Datenbank verbunden für die einzelnen Instanzen „Message“ abrufen

Jede Hilfe

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 

Antwort

1

geschätzt wird, wenn ich starte den Befehl 'anyways' mit der Entwicklungsumgebung, damit er sich tatsächlich mit der Entwicklungsdatenbank verbinden kann, es funktioniert perfekt :-)

immer wenn --update-crontab --set environment = 'entwicklung'