2016-05-15 5 views
1

Я не могу заставить всякий раз, когда драгоценный камень работать с моим actionmailer. Я пытаюсь запустить приложение в разработке, в котором электронное письмо будет отправлено конкретному человеку в определенное время.Всякий раз, когда Gem Daily электронной почты с использованием 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 с ФФ:

<!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 файлы должны работать на сервере производства.

На узле разработки, однако, вам необходимо обновить ваш crontab вручную (credits):

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

Чтобы просмотреть то, что в настоящее время в вашей crontab, используйте cat /etc/crontab. Ваши правила, определенные в любой момент, должны присутствовать в файле после его обновления.