BackEnd

RailsでSidekiqを使ってみた

投稿日:2017年12月20日 更新日:

はじめに

非同期処理を簡単に実装できるSidekiqを使ってみました。
Githubのリポジトリはこちらになります。
https://github.com/mperham/sidekiq

今回はRAILS CASTの記事をもとに実施します。

実行環境

  • Ruby 2.4.2
  • Rails 5.1.4

前準備

今回作成するものは、下図のような、コードを入力するとシンタックスハイライトをあててくれるPygmentsのAPIを叩きます。
APIはSidekiqにより別プロセスで実行します。

Redisのインストール

Sidekiqを使用するためにはRedisを起動させる必要があります。
Macを使用されている方はHomebrewでインストールすれば良いかと思います。

Railsの準備

プロジェクト作成

もととなるRailsプロジェクトを作成します。
scaffoldで簡易的に作成してしまいます。

作成されるテーブルは下記スキーマのようになるかと思います。
NOT NULL制約などはつける必要があります。)

新規登録時にAPIを叩く

RAILS CASTに従い、scafoldで生成されたcreateメソッドに追記します。

細かい修正は割愛します。
ただ、APIの返却値はHTMLの文字列です。
そのため、ビューで表示する際に、html_safeでタグを活かした方が良いと思います。
後々のため、空文字チェックだけしておきます。

Sidekiqの準備

Workerを作る

appディレクトリの下に新たにworkersディレクトリを作成します。
その中にpygments_worker.rbを作成します。

performで処理を定義してあげます。
先ほどsnippets_controller.rbで追記した処理をほぼそのまま移しています。
もともとsnippets_controller.rbに記載していた処理を書き換えます。

perform_asyncで定義したperformを非同期で実行してくれます。

試してみる

Sidekiqを起動させるためには、Redisを起動させておく必要があります。
brewでインストールし、特に何もいじっていなければ下記のコマンドで起動するかと思います。

次にSidekiqを起動します。

最後に、Railsのサーバーを起動します。

さいごに

Sidekiqを簡単に試してみました。
外部APIを使用する場合や重い処理を実行する際には使えそうです。
Sidekiqはいろいろできそうなので、ぜひ公式Wikiを見てください。
https://github.com/mperham/sidekiq/wiki

blog-page_footer_336




blog-page_footer_336




-BackEnd
-

執筆者:


comment

メールアドレスが公開されることはありません。

CAPTCHA


関連記事

Vue.js+TypeScriptな環境整備

1 はじめに2 vue-cliのインストール3 プロジェクトの作成3.1 機能の選択3.2 シンタックスの選択3.3 CSSプリプロセッサの設定3.4 Unit test3.5 E2E test3.6 ...

Go言語

Go言語 gocraft/workを使って常駐プロセスでジョブを処理させる

1 はじめに2 workの特徴3 workを使えるようにする3.1 Redisのインストール3.2 Go用のライブラリインストール4 Enqueue〜ジョブ実行まで4.1 Enqueue側4.2 ジョ ...

Docker上のLaravelのログをFluentdに出力する

1 はじめに2 環境3 Fluentdについて4 目的5 Fluentd本体はdocker-composeで導入5.1 fluentd5.2 db5.3 app5.4 web6 Laravelからログ ...

laravel logo

Laravelのバリデーションtips

1 はじめに2 配列のバリデーションでRule::uniqueを使う時のカラム名を指定したい3 配列バリデーションのエラーメッセージ制御4 カスタムバリデーションで、他の属性名を参照したい5 番外:複 ...

WebアプリケーションにLINEログインを組み込む

1 はじめに2 LINEログインとは2.1 LINEログインでできること2.2 LINEログインのフロー3 LINEログインの設定3.1 プロバイダーを新規作成する3.2 チャネルを作成する3.3 リ ...

フォロー

follow us in feedly

blog-page_side_responsive

2017年12月
 12
3456789
10111213141516
17181920212223
24252627282930
31 

アプリ情報

私たちは無料アプリもリリースしています、ぜひご覧ください。 下記のアイコンから無料でダウンロードできます。