参考にさせていただいたサイト
秩序のないメール送信に Sidekiq (with Active Job) – Qiita
sidekiqを使うとメールを非同期処理できます。
ただ非同期処理をするとログが出ないので、ログを仕込んだ方がいいです。
また、実装段階ではdeliver_later
の非同期処理をいきなり仕込むのではなく、deliver_now
で同期処理をしてログを見ながら実装した方がいいです。
前提
redisをインストールして、redis-severも立ち上がっていること。
Gemfile
gem 'sidekiq'
$ bundle
config
sidekiqを使うことを宣言
# config/application.rb config.active_job.queue_adapter = :sidekiq
sidekiq立ち上げの設定ファイル
:concurrency: 25 :pidfile: ./tmp/pids/sidekiq.pid :logfile: ./log/sidekiq.log :queues: - default - mailers :daemon: true
これで
$ bundle exec sidekiq -C config/sidekiq.yml
と打込めばsidekiqが立ち上がります。
そしてコンソールでメイラーをdeliver_laterで呼び出せばsidekiqを使った非同期メール送信ができます。
ログの仕込み方
Rails.logger.info 'Log for checking mail_magazines rake task has started'
こんな感じで非同期処理の前後にログを仕込んでおくと、デバッグや動作確認がしやすくなります。
コメントを残す