Railsにてメールを定期送信する仕組みを作ってみました。
実現方法ですが、sidekiqとsidekiq-scheduleを組み合わせるのが良さげだったので、これを採用。
おそらくこれが最も手っ取り早く実現する方法っぽい。
今回は前編として、事前準備からsidekiqでの実行までです。
動作環境は以下で、rubyやrailsはインストール済みという前提です。
OS : macOS Sierra 10.12.6
ruby : 2.4.0
rails : 5.1.4
redisをインストール
sidekiqを動かすためにまずはredisの環境を構築します。
redisはOSSのデータベースで、いわゆるNoSQLデータベースです。
sidekiqはredisを利用していますので、インストールが必要になります。
インストールが完了したら、redisを起動してみましょう。
sidekiqをインストール
Redisが起動できたら、sidekiqのインストールです。
適当な場所にディレクトリを作成し、その直下にGemfileを置きます。
Gemfileの中身は以下のような感じです。
gem 'sinatra', require: false # ダッシュボード利用のため
準備ができたらsidekiqをインストールします。
インストールができたら、続いて起動時の設定です。
config.redis = { url: 'redis://127.0.0.1:6379'}
end
Sidekiq.configure_client do |config|
config.redis = { url: 'redis://127.0.0.1:6379'}
end
設定関連です。
:verbose: false
:pidfile: ./tmp/pids/sidekiq.pid
:logfile: ./log/sidekiq.log
:concurrency: 10
:queues: - default - test
RailsアプリケーションとsidekiqのWorker を用意
インストールができたら、Railsアプリケーションを作成します。
Railsアプリケーションはもちろん事前に作成しておいてもいいです。
sidekiqのWorker を実装します。
include Sidekiq::Worker
def perform()
puts 'Hello'
end
end
sidekiqの実行
railsのコンソールを呼び出します。
sidekiqのWorkerを呼び出します。
sidekiqのコンソールに出力されました!
2017-12-08T06:15:40.959Z 34560 TID-oxm30emxo INFO: Running in ruby 2.4.2p198 (2017-09-14 revision 59899) [x86_64-darwin16]
2017-12-08T06:15:40.959Z 34560 TID-oxm30emxo INFO: See LICENSE and the LGPL-3.0 for licensing details.
2017-12-08T06:15:40.959Z 34560 TID-oxm30emxo INFO: Upgrade to Sidekiq Pro for more features and support: http://sidekiq.org
2017-12-08T06:15:40.966Z 34560 TID-oxm30emxo INFO: Starting processing, hit Ctrl-C to stop
2017-12-08T06:15:52.948Z 34560 TID-oxm3axijs EventWorker JID-dc2c470225d81e7d656722ea INFO: start
Hello
2017-12-08T06:15:52.950Z 34560 TID-oxm3axijs EventWorker JID-dc2c470225d81e7d656722ea INFO: done: 0.002 sec
ちょっとわかりにくいですが、"Hello"という文字が表示されています。
sidekiqには管理画面が用意されています。
管理画面の設定は以下です。
mount Sidekiq::Web, at: "/sidekiq"
これでsidekiqの実行まできました。
定期的にアプリを実行して、メールを送信するまでは後編に続きます。
Railsにて非同期処理とスケジュール機能を使い定期的にメール送信する(後編)
本記事はRailsにてメールを定期送信する仕組みを解説したものです。 今回は後編で、定期的にアプリを実行し、さらにメール送信を実装します。 前編はこちら。 動作確認は以下で行っています。 OS : ...
続きを見る