2016-05-15 19 views
1

Ich kann nicht scheinen, um die wann immer Edelstein arbeiten mit meinem Actionmailer. Ich versuche, die Anwendung in der Entwicklung auszuführen, in der eine E-Mail zu einer bestimmten Zeit an eine bestimmte Person gesendet wird.Immer wenn Gem Daily E-Mail mit actionmailer nicht senden

In meiner schedule.rb Datei habe ich folgendes:

every :day, :at => '12:48pm' do 
    runner "FoodPlan.food_email" 
end 

In meinem Controller food_plans_controller.rb ich genannt habe:

def self.food_email 
    @food_plans = FoodPlan.where(food_plan_date: Date.today).order('meal ASC') 

    UserMailer.food_email(@food_plans).deliver_now 
    end 

In user_mailer.rb habe ich (zur Kenntnis nehmen, ich entfernt die E-Mail aus Gründen der Privatsphäre):

def food_email (food) 
    @food_plans = food 

    mail(to: '[email protected]', subject: 'Food Orders for #{Date.today}') 
    end 

Ich habe einen Ordner in den Ansichten namens user_mailer,

<!DOCTYPE html> 
<html>  
</head> 
    <body> 
    <h1>title</h1> 
    <p> 
     Good morning, -----! 
     <br><br> 
     Meal Plans for <%=Date.today%>: 
     <br><br> 
     <table class="table table-bordered table-striped"> 
    <thead> 
    <tr> 
     <th>#</th> 
     <th>Meal Plan</th> 
     <th>Ordered by</th> 
     <th>Room Number</th> 
     <th>Received by</th> 
     <th>Signature</th> 
    </tr> 
    </thead> 

    <tbody> 
    <%countint=1%> 
    <% @food_plans.each do |food_plan| %> 
     <tr> 
     <td><%=countint%></td> 
     <td><%= food_plan.meal %></td> 
     <td><%=food_plan.applicant.first_name%> 
     <%=food_plan.applicant.last_name%></td> 
     <td><%=food_plan.applicant.room_number%></td> 
     <%countint+=1%> 
     <td></td> 
     <td></td> 
     </tr> 
    <% end %> 


    </tbody> 
</table> 
     <br> 
     <br> 
     ---. 
     <br> 
     <br> 
     If you have any concerns, don't hesitate to call us at ------. 

     <br> 
     <br> 
     Thanks, <br>---- 
    </p> 
    </body> 
</html> 

In meiner Entwicklung config (entfernt die E-Mail und Passwort I) Ich habe: im Inneren eine Datei food_email.html.erb mit dem ff genannt ist

config.action_mailer.smtp_settings = { 
    address:    'smtp.gmail.com', 
    port:     587, 
    domain:    'example.com', 
    user_name:   '-------', 
    password:    '-------', 
    authentication:  'plain', 
    enable_starttls_auto: true } 

ich diese guide versucht haben, zu lesen aber ich kann das Juwel nicht mit actionmailer arbeiten lassen. Ich habe auch auf der documentation der Wann immer Juwel gelesen, aber ich kann immer noch nicht herausfinden, was ich falsch mache. :(

Ich erhalte keine Fehler, es ist nur, dass die E-Mail nicht sendet.

+0

Insbesondere, was nicht funktioniert und welches Problem haben Sie? Erhalten Sie einen Fehler? Wird die E-Mail nicht gesendet, obwohl Sie dies erwarten? –

+0

Die E-Mail wird nicht gesendet. Ich denke nicht, dass es sogar in den Scheduler geht. Ich schaue auf die Protokolle meines Localhost-Terminals und es gibt keine Änderungen an den Protokollen, selbst während der Zeit, die ich im Scheduler angegeben habe. – Acrux

Antwort

1

Ich denke, Ihr, wenn Regeln nicht bekommen immer auf den lokalen crontab und somit laufen eigentlich nie. Das, wenn gem Regeln machen nicht das System die Befehle von theselves laufen, sie nur eine Rubin Notation der cron Regeln sind, die in den /etc/crontab (oder ähnlich) befinden sich auf Unix-ähnlichen Systemen.

das, wenn gem automatisch aktualisiert die crontab während der Bereitstellung (mit der capistrano plugin), so Ihre ru les sollte auf dem Produktionsserver funktionieren. jedoch

Auf dem Entwicklungsrechner, müssen Sie Ihre crontab manuell (credits) aktualisieren:

whenever --update-crontab --set environment='development' 

Um zu sehen, was gerade in Ihrem crontab, cat /etc/crontab verwenden. Ihre Regeln, die in wann immer definiert sind, sollten in der Datei vorhanden sein, nachdem Sie sie aktualisiert haben.