Как автоматически отправлять письма с помощью whenever gem

#ruby-on-rails #ruby-on-rails-3 #amazon-ec2 #ruby-on-rails-3.2

#ruby-on-rails #ruby-on-rails-3 #amazon-ec2 #ruby-on-rails-3.2

Вопрос:

Я использовал whenever gem для отправки писем каждый день, но он не отправляет.Я использую amazon linux ec2 экземпляр. Пожалуйста, взгляните на мой код один раз.

schedule.rb:

 every 5.minutes do
  runner "Listings.today_expired_spaces"
end
  

Listings.rb:(model-file)

   def today_expired_spaces
        @list=List.find_by_date(Date.today)
        UserMailer.today_expired_list(@list).deliver  
  end
  

В производстве:

После выполнения этих команд я получаю ответы, подобные этому

1.whenever -w

[запись] записанный файл crontab

2. всякий раз, когда я [пишу] файл crontab обновляется

3. всякий раз, когда

0,5,10,15,20,25,30,35,40,45,50,55 * * * * / bin/bash -l -c ‘cd /home/ubuntu/my_server amp;amp; bundle exec script /rails runner -e production ‘»Пробелы.today_expired_spaces'»‘

[сообщение] Выше приведен ваш файл расписания, преобразованный в синтаксис cron; ваш файл crontab не обновлялся.

[сообщение] Запустите `whenever —help’ для получения дополнительных опций.

Пожалуйста, предоставьте решение для этого.

Ответ №1:

вы должны создать папку rake task в lib/tasks и включить задачу в файл расписания whenver в config/schedule.rb

в lib/tasks/send_mail_bang_bang.rake (имя файла только для примера)

 require 'rake'
namespace :task_namespace do
  desc 'task description'
  task :send_mail => :environment do
    # call Listing method to send mail
    Listings.today_expired_spaces
  end
end
  

в config/schedule.rb

 every 5.minutes do
  rake 'task_namespace:send_mail'
end
  

вы можете прочитать больше о задаче рейка здесь в части «пользовательские задачи рейка»

надеюсь, это поможет

Комментарии:

1. Я думаю, что это должно работать с большинством серверов, это просто задание cron задача rake с использованием whenever gem, при условии, что ваш сервер работает на linux / ubuntu и поддерживает RoR ofc