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


関連記事

Go言語

mutexを使ってGoで排他処理をする

1 はじめに1.1 mutexとは2 mutexを使った排他制御2.1 失敗するケース2.2 mutexを使って排他制御した場合2.3 構造体へmutexを埋め込む3 RWMutexを使う4 さいごに ...

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

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

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

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

Go言語

FSMを使った状態管理をGoで実装する

1 はじめに2 FSMとは3 基本的な実装3.1 実装する状態管理の概要3.2 状態管理を実装する4 structを定義した応用的な実装5 FSMの可視化6 さいごに7 おすすめ書籍 はじめに 一般的 ...

Go言語

[Go初心者]テストについて学習

1 はじめに2 テスト2.1 エラーの値を比較する2.2 エラーの型を比較する3 httptest3.1 httptestの使い方4 さいごに5 おすすめ書籍 はじめに 今回はGo言語のテストについて ...

フォロー

blog-page_side_responsive

2017年12月
 12
3456789
10111213141516
17181920212223
24252627282930
31  

アプリ情報

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