search
LoginSignup
2

More than 1 year has passed since last update.

posted at

updated at

Organization

Active jobでの非同期処理

非同期処理と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を使ってみよう

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
2