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


関連記事

Rust入門してみた (基本構文編)

1 はじめに2 Rustとは?3 Rustの特徴的な基本構文3.1 変数と定数3.2 所有権3.3 所有権の借用3.4 関数3.5 エラーハンドリング3.5.1 回復不能なエラー(panic!)3.5 ...

rails

Capistrano3でRailsアプリケーションをデプロイする

1 はじめに1.1 前提条件2 Cpistranoについて3 導入3.1 Gemのインストール3.2 設定ファイルの準備4 デプロイ設定4.1 Capfileを修正する4.2 各環境で共通のデプロイ設 ...

Stripe Connectを使って複合プランの継続課金を実装

1 はじめに1.1 想定する継続課金1.2 想定するシチュエーション2 継続課金商品の作成2.1 プランの継続課金商品の作成2.2 ID数の継続課金商品の作成3 実装3.1 プランAとID数を30契約 ...

Go言語

Go 1.23 で追加された iter パッケージを使ってみる

1 はじめに1.1 iteratorとは2 push方式のイテレータ2.1 kとvを受け取るイテレータ関数2.2 イテレータ関数をチェインさせる2.3 イテレータ関数の型を利用する2.4 イテレーショ ...

Rubyを使ってDialogflowのお勉強

1 はじめに1.1 環境2 とりあえずAPIで叩いてみる2.1 テスト用のIntentを作成2.2 Gemの設定3 Eventについて3.1 WELCOMEイベント3.2 パラメータ付きで叩く3.3 ...

フォロー

blog-page_side_responsive

2017年12月
 12
3456789
10111213141516
17181920212223
24252627282930
31  

アプリ情報

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