#非同期処理とActive job
非同期処理とはAという作業と同時に別のBという作業を行うこと(マルチタスク、並列作業)。通常はAという作業の後にBという作業をするように一つ一つしか行えない非同期処理と同期処理の実装パターンと特徴。しかしrailsではActive jobを用いて必要なツールのインストールを行って実行する。ここではsidekiqの例をあげます。
#準備、設定
sidekiqによる非同期処理を行うにはredisサーバーが起動していないといけないので、まずredisをマシーンにインストール。
↓
redisのサーバーを起動
↓
gemを使ってsidekiqをアプリにインストール
↓
bundle exec sidekiqでsidekiqを起動
↓
config/environmentsでその環境でsidekiqを使用することを記述
#ジョブを作成、実行
ジョブとはメインの処理とは別に並行的にバックグラウンドで行わせる処理のこと。ジョブを実行するにはジョブを定義し、読み出さないといけない
rails g job ~でジョブを記述するためだけのファイルを作る
↓
app/jobs/~job.rbにジョブの内容を記述
↓
非同期処理を行いたいアクションの中でジョブの読み出しを行うことで非同期処理される
厳密にはジョブの読み出しをするとすぐに実行されるわけではない。予約をするイメージ。忙しくてできない時は開始されないし、処理できる状態になれば実行されるって感じ
#参考文献
現場で使える Ruby on Rails 5速習実践ガイド
Railsガイド
Rails 4.2で導入されたActive Jobを使ってみよう