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

page_footer_300rect




page_footer_300rect




-BackEnd
-

執筆者:


comment

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

CAPTCHA


関連記事

PHPerだけどKotlinを勉強したって良いよね その2〜コンストラクタ編〜

1 はじめに2 コンストラクタ2.1 プライマリコンストラクタ2.2 セカンダリコンストラクタ2.3 ニックネームのみを入力した人2.4 ニックネームと email を入力した人2.5 Faceboo ...

Go言語

gorpを使ってDBを操作する

1 はじめに1.1 GoのORM1.2 gorpの紹介2 gorpの基本操作2.1 insert2.2 select2.3 update2.4 delete3 構造体のmapping4 テーブルの作成 ...

laravel logo

Laravel Authのパスワードリセット機能をカスタマイズする

1 はじめに2 準備2.1 Auth2.2 mailhog3 ユーザー登録とログイン4 パスワードリセットのカスタマイズ4.1 ルーティング確認4.2 view編集4.3 認証処理の編集5 リセット画 ...

rails

Active Strageを使用してユーザーのアバターを登録、表示する

1 はじめに1.1 環境2 セットアップ2.1 前準備2.2 マイグレーションファイル作成2.3 設定ファイル3 実際に使って見る3.1 モデル3.2 コントローラー3.3 ビュー4 個人的メモ4.1 ...

[Dialogflow + CF] アクア様が罵倒してくれたり天気を教えてくれるSlackボットを作る

1 はじめに2 Dialogflowの準備2.1 プロジェクトを作る2.2 Intentを作る2.3 試してみる2.4 WELCOME Intentを作る3 Slackボットを作る4 名前を答える5 ...

フォロー

follow us in feedly

page_side_300rect

2017年12月
« 11月 1月 »
 12
3456789
10111213141516
17181920212223
24252627282930
31 

アプリ情報

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