2016-05-15 99 views
1

我似乎无法使我的行动起来无论何时宝石工作。我正试图在开发中运行应用程序,其中电子邮件将在特定时间发送给特定个人。每当宝石每日电子邮件使用actionmailer不发送

在我schedule.rb文件我有以下几点:

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

在我的控制器称为food_plans_controller.rb我:

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

    UserMailer.food_email(@food_plans).deliver_now 
    end 

在user_mailer.rb我有(请注意我删除电子邮件为隐私的原因):

def food_email (food) 
    @food_plans = food 

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

我有一个名为user_mailer的视图中的文件夹,里面是一个叫做food_email.html.erb与FF文件:

<!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> 

在我的开发配置我已(我删除的电子邮件和密码):

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

我曾尝试阅读本guide但我仍然无法让宝石与actionmailer一起工作。我也阅读了每当宝石documentation,但我仍然无法弄清楚我做错了什么。 :(

我没有得到任何错误,它只是邮件没有发送。

+0

具体什么不行,你有什么问题?你有错误吗?邮件是否被发送,即使你期望它? –

+0

电子邮件未被发送。我不认为它甚至会进入调度程序。我正在查看本地主机终端的日志,即使在调度程序中指定的时间内,日志也没有任何更改。 – Acrux

回答

1

我想你只要规则没有得到过的地方crontab,因此永远不会实际运行。每当在宝石规则不使系统运行由theselves的命令,他们只是一个的cron规则驻留在/etc/crontab(或类似)在类Unix系统红宝石符号。

的,只要创业板会自动更新crontab在部署期间(使用capistrano plugin),所以你的RU les应该在生产服务器上工作。

在开发主机但是,您需要更新您的crontab手动(credits):

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

要查看当前什么是你的crontab内,使用cat /etc/crontab。您的规则(在任何时候定义)应在您更新后出现在文件中。

相关问题