ActionMailer - медленное обновление страницы после отправки сообщения
Есть два способа, как уменьшить задержку обновления страницы сайта, после нажатия на кнопку "отправить сообщение". Первый - настроить на сервере, где находится сайт, почтовый сервер, через который будут отправляться почта. Второй - использовать асинхронную отправку сообщений, чем сейчас и займемся.
Самый простой способ реализации асинхронной отправки почты - использование плагина delayed_job. Добавляем в Gemfile:
gem 'delayed_job_active_record'
и выполняем из директории проекта:
bundle install
rails g delayed_job:active_record
rake db:migrate
Открываем контроллер и изменяем:
AdminMailer.alert_message().deliver
на
AdminMailer.delay.alert_message()
Осталось только выполнить в консоли:
rake jobs:work
Теперь обновление страницы будет происходит практически мгновенно, а в консоли можно будет отслеживать состояние отложенных заданий.
Комментарии
Отправить комментарий