SidekiqとRedisをRubyonRailsアプリケーションに追加する方法
序章
Ruby on Rails アプリケーションを開発する場合、非同期で実行する必要のあるアプリケーションタスクがあることに気付くかもしれません。 データの処理、バッチメールの送信、外部APIとのやり取りはすべて、バックグラウンドジョブと非同期で実行できる作業の例です。 バックグラウンドジョブを使用すると、時間のかかる可能性のあるタスクをバックグラウンド処理キューにオフロードし、元の要求/応答サイクルを解放することで、アプリケーションのパフォーマンスを向上させることができます。
Sidekiq は、Railsアプリケーションに実装できる最も広く使用されているバックグラウンドジョブフレームワークの1つです。 柔軟性とパフォーマンスで知られるメモリ内のKey-ValueストアであるRedisに支えられています。 SidekiqはRedisをジョブ管理ストアとして使用して1秒あたり数千のジョブを処理します。
このチュートリアルでは、RedisとSidekiqを既存のRailsアプリケーションに追加します。 処理するSidekiqワーカークラスとメソッドのセットを作成します。
- プロジェクトリポジトリのCSVファイルからアプリケーションデータベースへの絶滅危惧種のサメ情報のバッチアップロード。
- このデータの削除。
終了すると、ワーカーとジョブを使用してタスクを非同期で処理するデモアプリケーションが作成されます。 これは、このチュートリアルを出発点として使用して、独自のアプリケーションにワーカーとジョブを追加するための優れた基盤になります。
前提条件
このチュートリアルに従うには、次のものが必要です。
- Ubuntu18.04を実行しているローカルマシンまたは開発サーバー。 開発マシンには、管理者権限を持つroot以外のユーザーと、
ufw
で構成されたファイアウォールが必要です。 これを設定する方法については、 Ubuntu18.04を使用した初期サーバー設定のチュートリアルを参照してください。 - Node.jsおよびnpmがローカルマシンまたは開発サーバーにインストールされています。 このチュートリアルでは、Node.jsバージョン10.17.0とnpmバージョン6.11.3を使用します。 Ubuntu 18.04にNode.jsとnpmをインストールする手順については、 Ubuntu18.04にNode.jsをインストールする方法の「PPAを使用したインストール」セクションの手順に従ってください。
- ローカルマシンまたは開発サーバーにインストールされているYarnパッケージマネージャー。 公式ドキュメントのインストール手順に従うことができます。
- Ubuntu18.04でrbenvを使用してRubyonRailsをインストールする方法の手順1〜4 に従って、ローカルマシンまたは開発サーバーにインストールされたRuby、 rbenv 、およびRails 。 このチュートリアルでは、Ruby 2.5.1 、rbenv 1.1.2 、およびRails 5.2.3を使用します。
- Ruby onRailsアプリケーションのステップ1に従ってSQLiteをインストールしました。 このチュートリアルでは、SQLite 3 3.22.0を使用します。
- Ubuntu 18.04 にRedisをインストールして保護する方法のステップ1〜3 に従って、Redisをインストールします。 このチュートリアルでは、Redis 4.0.9を使用します。
ステップ1—プロジェクトのクローンを作成して依存関係をインストールする
最初のステップは、 DigitalOceanCommunityGitHubアカウントからrails-bootstrapリポジトリのクローンを作成することです。 このリポジトリには、ブートストラップをRuby on Railsアプリケーションに追加する方法で説明されているセットアップのコードが含まれています。このコードは、ブートストラップを既存のRails5プロジェクトに追加する方法を説明しています。
リポジトリをrails-sidekiq
というディレクトリに複製します。
git clone https://github.com/do-community/rails-bootstrap.git rails-sidekiq
rails-sidekiq
ディレクトリに移動します。
cd rails-sidekiq
コードを操作するには、最初にプロジェクトの依存関係をインストールする必要があります。これは、Gemfileにリストされています。 SidekiqとRedisを使用するには、プロジェクトに sidekiqgemを追加する必要もあります。
nano
またはお気に入りのエディターを使用して、プロジェクトのGemfileを開いて編集します。
nano Gemfile
メインプロジェクトの依存関係(開発の依存関係の上)の任意の場所にgemを追加します。
〜/ rails-sidekiq / Gemfile
. . . # Reduces boot times through caching; required in config/boot.rb gem 'bootsnap', '>= 1.1.0', require: false gem 'sidekiq', '~>6.0.0' group :development, :test do . . .
gemの追加が完了したら、ファイルを保存して閉じます。
次のコマンドを使用して、gemをインストールします。
bundle install
redisgemもsidekiq
の要件としてインストールされていることが出力に表示されます。
次に、Yarnの依存関係をインストールします。 このRails5プロジェクトは、webpackでアセットを提供するように変更されているため、JavaScriptの依存関係はYarnによって管理されるようになりました。 これは、プロジェクトのpackage.json
ファイルにリストされている依存関係をインストールして検証する必要があることを意味します。
yarn install
を実行して、これらの依存関係をインストールします。
yarn install
次に、データベースの移行を実行します。
rails db:migrate
移行が完了したら、アプリケーションをテストして、期待どおりに機能していることを確認できます。 ローカルで作業している場合は、次のコマンドを使用して、ローカルバンドルのコンテキストでサーバーを起動します。
bundle exec rails s
開発サーバーで作業している場合は、次のコマンドでアプリケーションを起動できます。
bundle exec rails s --binding=your_server_ip
localhost:3000
またはhttp://your_server_ip:3000
に移動します。 次のランディングページが表示されます。
新しいサメを作成するには、 Get Shark Info ボタンをクリックします。これにより、sharks/index
ルートに移動します。
アプリケーションが機能していることを確認するために、いくつかのデモ情報をアプリケーションに追加できます。 NewSharkをクリックします。 プロジェクトの認証設定のおかげで、ユーザー名( sammy )とパスワード( shark )の入力を求められます。
New Shark ページで、 Name フィールドに「GreatWhite」を入力し、Factsフィールドに「Scary」を入力します。
サメの作成ボタンをクリックしてサメを作成します。 サメが作成されたことを確認したら、CTRL+C
でサーバーを強制終了できます。
これで、プロジェクトに必要な依存関係がインストールされ、その機能がテストされました。 次に、Railsアプリケーションにいくつかの変更を加えて、絶滅危惧種のサメのリソースを操作できます。
ステップ2—絶滅危惧種のサメ資源のコントローラーを生成する
絶滅危惧種のサメのリソースを活用するために、アプリケーションに新しいモデルを追加し、絶滅危惧種のサメに関する情報をユーザーに提示する方法を制御するコントローラーを追加します。 私たちの最終的な目標は、ユーザーがアプリケーションの全体的な機能をブロックすることなく、絶滅危惧種のサメに関する大量の情報をアップロードし、不要になったときにその情報を削除できるようにすることです。
まず、絶滅危惧種のサメのEndangered
モデルを作成しましょう。 データベーステーブルにサメの名前の文字列フィールドと、国際自然保護連合(IUCN)カテゴリの文字列フィールドを含めます。それぞれのサメが危険にさらされています。
最終的に、モデル構造は、バッチアップロードの作成に使用するCSVファイルの列と一致します。 このファイルはdb
ディレクトリにあり、次のコマンドでその内容を確認できます。
cat db/sharks.csv
このファイルには、73の絶滅危惧種のサメとそのIUCNステータスのリストが含まれています。
Endangered
モデルはこのデータと相関し、このCSVファイルから新しいEndangered
インスタンスを作成できるようになります。 次のコマンドを使用してモデルを作成します。
rails generate model Endangered name:string iucn:string
次に、index
アクションでEndangered
コントローラーを生成します。
rails generate controller endangered index
これにより、アプリケーションの機能を構築するための開始点が得られますが、Railsが生成したコントローラーファイルにカスタムメソッドを追加する必要もあります。
今すぐそのファイルを開きます:
nano app/controllers/endangered_controller.rb
Railsは、私たちが記入し始めることができる骨格の輪郭を私たちに提供してくれました。
まず、データを処理するために必要なルートを決定する必要があります。 generate controller
コマンドのおかげで、最初にindex
メソッドを使用できます。 これは、index
ビューと相関関係があり、絶滅危惧種のサメをアップロードするオプションをユーザーに提示します。
ただし、ユーザーがすでにサメをアップロードしている可能性がある場合にも対処する必要があります。 この場合、アップロードオプションは必要ありません。 Endangered
クラスのインスタンスがすでにいくつ存在するかを評価する必要があります。これは、バッチアップロードがすでに行われていることを複数が示しているためです。
データベースからEndangered
クラスの各インスタンスを取得するset_endangered
private
メソッドを作成することから始めましょう。 次のコードをファイルに追加します。
〜/ rails-sidekiq / app / controllers / endangered_controller.rb
class EndangeredController < ApplicationController before_action :set_endangered, only: [:index, :data] def index end private def set_endangered @endangered = Endangered.all end end
before_action
フィルターは、@endangered
の値がindex
およびdata
ルートにのみ設定されるようにすることに注意してください。サメのデータ。
次に、次のコードをindex
メソッドに追加して、アプリケーションのこの部分にアクセスするユーザーの正しいパスを決定します。
〜/ rails-sidekiq / app / controllers / endangered_controller.rb
class EndangeredController < ApplicationController before_action :set_endangered, only: [:index, :data] def index if @endangered.length > 0 redirect_to endangered_data_path else render 'index' end end . . .
Endangered
クラスのインスタンスが0を超える場合は、ユーザーをdata
ルートにリダイレクトします。ここで、ユーザーは作成したサメに関する情報を表示できます。 それ以外の場合は、index
ビューが表示されます。
次に、index
メソッドの下に、data
メソッドを追加します。これは、data
ビューに関連付けられます。
〜/ rails-sidekiq / app / controllers / endangered_controller.rb
. . . def index if @endangered.length > 0 redirect_to endangered_data_path else render 'index' end end def data end . . .
次に、データのアップロード自体を処理するメソッドを追加します。 このメソッドをupload
と呼び、Sidekiqワーカークラスとメソッドを呼び出して、CSVファイルからのデータアップロードを実行します。 次のステップで、このワーカークラスAddEndangeredWorker
の定義を作成します。
今のところ、次のコードをファイルに追加して、Sidekiqワーカーを呼び出してアップロードを実行します。
〜/ rails-sidekiq / app / controllers / endangered_controller.rb
. . . def data end def upload csv_file = File.join Rails.root, 'db', 'sharks.csv' AddEndangeredWorker.perform_async(csv_file) redirect_to endangered_data_path, notice: 'Endangered sharks have been uploaded!' end . . .
AddEndangeredWorker
クラスでperform_async
メソッドを呼び出し、CSVファイルを引数として使用することで、このコードはサメのデータとアップロードジョブがRedisに渡されるようにします。 セットアップするSidekiqワーカーは、ジョブキューを監視し、新しいジョブが発生したときに応答します。
perform_async
を呼び出した後、upload
メソッドはdata
パスにリダイレクトされ、ユーザーはアップロードされたサメを見ることができます。
次に、destroy
メソッドを追加してデータを破棄します。 upload
メソッドの下に次のコードを追加します。
〜/ rails-sidekiq / app / controllers / endangered_controller.rb
. . . def upload csv_file = File.join Rails.root, 'db', 'sharks.csv' AddEndangeredWorker.perform_async(csv_file) redirect_to endangered_data_path, notice: 'Endangered sharks have been uploaded!' end def destroy RemoveEndangeredWorker.perform_async redirect_to root_path end . . .
upload
メソッドと同様に、destroy
メソッドには、RemoveEndangeredWorker
クラスに対するperform_async
呼び出しが含まれています。これは、作成するもう1つのSidekiqワーカーです。 このメソッドを呼び出した後、ユーザーをルートアプリケーションパスにリダイレクトします。
完成したファイルは次のようになります。
〜/ rails-sidekiq / app / controllers / endangered_controller.rb
class EndangeredController < ApplicationController before_action :set_endangered, only: [:index, :data] def index if @endangered.length > 0 redirect_to endangered_data_path else render 'index' end end def data end def upload csv_file = File.join Rails.root, 'db', 'sharks.csv' AddEndangeredWorker.perform_async(csv_file) redirect_to endangered_data_path, notice: 'Endangered sharks have been uploaded!' end def destroy RemoveEndangeredWorker.perform_async redirect_to root_path end private def set_endangered @endangered = Endangered.all end end
編集が終了したら、ファイルを保存して閉じます。
アプリケーションのルートを固めるための最後のステップとして、ルート宣言が存在するファイルであるconfig/routes.rb
のコードを変更します。
今すぐそのファイルを開きます:
nano config/routes.rb
現在、ファイルは次のようになっています。
〜/ rails-sidekiq / config / routers.rb
Rails.application.routes.draw do get 'endangered/index' get 'home/index' resources :sharks do resources :posts end root 'home#index' # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html end
コントローラで定義したルートdata
、upload
、およびdestroy
を含めるように、ファイルを更新する必要があります。 data
ルートはGETリクエストと一致してサメのデータを取得しますが、upload
およびdestroy
ルートはそのデータをアップロードして破棄するPOSTリクエストにマッピングされます。
次のコードをファイルに追加して、これらのルートを定義します。
〜/ rails-sidekiq / config / routers.rb
Rails.application.routes.draw do get 'endangered/index' get 'endangered/data', to: 'endangered#data' post 'endangered/upload', to: 'endangered#upload' post 'endangered/destroy', to: 'endangered#destroy' get 'home/index' resources :sharks do resources :posts end root 'home#index' # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html end
編集が終了したら、ファイルを保存して閉じます。
Endangered
モデルとコントローラーを配置したら、Sidekiqワーカークラスの定義に進むことができます。
ステップ3—Sidekiqワーカーの定義
コントローラのSidekiqワーカーでperform_async
メソッドを呼び出しましたが、それでもワーカー自体を作成する必要があります。
まず、ワーカー用のworkers
ディレクトリを作成します。
mkdir app/workers
AddEndangeredWorker
ワーカーのファイルを開きます。
nano app/workers/add_endangered_worker.rb
このファイルには、CSVファイルのデータを操作できるようにするコードを追加します。 まず、クラスを作成するファイルにコードを追加し、 Ruby CSVライブラリを含め、このクラスがSidekiqワーカーとして機能することを確認します。
〜/ rails-sidekiq / app / workers / add_endangered_worker.rb
class AddEndangeredWorker require 'csv' include Sidekiq::Worker sidekiq_options retry: false end
また、失敗した場合にSidekiqがアップロードを再試行しないようにするために、retry: false
オプションも含まれています。
次に、perform
関数のコードを追加します。
〜/ rails-sidekiq / app / workers / add_endangered_worker.rb
class AddEndangeredWorker require 'csv' include Sidekiq::Worker sidekiq_options retry: false def perform(csv_file) CSV.foreach(csv_file, headers: true) do |shark| Endangered.create(name: shark[0], iucn: shark[1]) end end end
perform
メソッドは、コントローラーで定義されたperform_async
メソッドから引数を受け取るため、引数の値を揃えることが重要です。 ここでは、コントローラーで定義した変数であるcsv_file
を渡し、CSVライブラリのforeach
メソッドを使用してファイルの値を読み取ります。 このループにheaders: true
を設定すると、ファイルの最初の行がヘッダーの行として扱われるようになります。
次に、ブロックはファイルからEndangered
モデルに設定した列name
およびiucn
に値を読み取ります。 このループを実行すると、CSVファイルの各エントリに対してEndangered
インスタンスが作成されます。
編集が終了したら、ファイルを保存して閉じます。
次に、このデータの削除を処理するワーカーを作成します。 RemoveEndangeredWorker
クラスのファイルを開きます。
nano app/workers/remove_endangered_worker.rb
コードを追加してクラスを定義し、CSVライブラリを使用してSidekiqワーカーとして機能するようにします。
〜/ rails-sidekiq / app / workers / remove_endangered_worker.rb
class RemoveEndangeredWorker include Sidekiq::Worker sidekiq_options retry: false end
次に、perform
メソッドを追加して、絶滅危惧種のサメデータの破壊を処理します。
〜/ rails-sidekiq / app / workers / remove_endangered_worker.rb
class RemoveEndangeredWorker include Sidekiq::Worker sidekiq_options retry: false def perform Endangered.destroy_all end end
perform
メソッドは、Endangered
クラスでdestroy_all
を呼び出します。これにより、クラスのすべてのインスタンスがデータベースから削除されます。
編集が終了したら、ファイルを保存して閉じます。
ワーカーを配置したら、endangered
ビューのレイアウト、およびindex
およびdata
ビューのテンプレートの作成に進み、ユーザーがアップロードして表示できるようにします。絶滅危惧種のサメ。
ステップ4—レイアウトとビューテンプレートを追加する
ユーザーが絶滅危惧種のサメの情報を楽しむためには、endangered
コントローラーで定義されたビューのレイアウトと、index
およびdata
ビュー。
現在、このアプリケーションは、app/views/layouts/application.html.erb
にあるアプリケーション全体のレイアウト、ナビゲーションパーシャル、およびsharks
ビューのレイアウトを使用しています。 アプリケーションレイアウトはコンテンツブロックをチェックします。これにより、ユーザーが使用しているアプリケーションの部分に基づいてさまざまなレイアウトを読み込むことができます。home
index
ページの場合、1つのレイアウトが表示されます。 、および個々のサメに関連するビューについては、別のサメが表示されます。
sharks
レイアウトは、endangered
ビューに再利用できます。これは、この形式がサメのデータをまとめて表示する場合にも機能するためです。
sharks
レイアウトファイルをコピーして、endangered
レイアウトを作成します。
cp app/views/layouts/sharks.html.erb app/views/layouts/endangered.html.erb
次に、index
およびdata
ビューのビューテンプレートの作成に取り組みます。
最初にindex
テンプレートを開きます。
nano app/views/endangered/index.html.erb
ボイラープレートコードを削除し、代わりに次のコードを追加します。これにより、ユーザーは絶滅危惧種のカテゴリに関する一般的な情報を入手でき、絶滅危惧種のサメに関する情報をアップロードするオプションが表示されます。
〜/ rails-sidekiq / app / views / endangered / index.html.erb
<p id="notice"><%= notice %></p> <h1>Endangered Sharks</h1> <p>International Union for Conservation of Nature (ICUN) statuses: <b>vu:</b> Vulnerable, <b>en:</b> Endangered, <b>cr:</b> Critically Endangered </p> <br> <%= form_tag endangered_upload_path do %> <%= submit_tag "Import Endangered Sharks" %> <% end %> <br> <%= link_to 'New Shark', new_shark_path, :class => "btn btn-primary btn-sm" %> <%= link_to 'Home', home_index_path, :class => "btn btn-primary btn-sm" %>
form_tag
は、アップロード用に定義したルートであるendangered_upload_path
に投稿アクションをポイントすることで、データのアップロードを可能にします。 submit_tag
で作成された送信ボタンは、ユーザーに"Import Endangered Sharks"
の入力を求めます。
このコードに加えて、ICUNコードに関する一般的な情報が含まれているため、ユーザーは表示されるデータを解釈できます。
編集が終了したら、ファイルを保存して閉じます。
次に、data
ビューのファイルを開きます。
nano app/views/endangered/data.html.erb
次のコードを追加します。これにより、絶滅危惧種のサメのデータを含むテーブルが追加されます。
〜/ rails-sidekiq / app / views / endangered / data.html.erb
<p id="notice"><%= notice %></p> <h1>Endangered Sharks</h1> <p>International Union for Conservation of Nature (ICUN) statuses: <b>vu:</b> Vulnerable, <b>en:</b> Endangered, <b>cr:</b> Critically Endangered </p> <div class="table-responsive"> <table class="table table-striped table-dark"> <thead> <tr> <th>Name</th> <th>IUCN Status</th> <th colspan="3"></th> </tr> </thead> <tbody> <% @endangered.each do |shark| %> <tr> <td><%= shark.name %></td> <td><%= shark.iucn %></td> </tr> <% end %> </tbody> </table> </div> <br> <%= form_tag endangered_destroy_path do %> <%= submit_tag "Delete Endangered Sharks" %> <% end %> <br> <%= link_to 'New Shark', new_shark_path, :class => "btn btn-primary btn-sm" %> <%= link_to 'Home', home_index_path, :class => "btn btn-primary btn-sm" %>
このコードには、ICUNステータスコードと、出力されたデータのブートストラップテーブルが含まれています。 @endangered
変数をループすることにより、各サメの名前とICUNステータスをテーブルに出力します。
表の下に、form_tags
とsubmit_tags
の別のセットがあり、ユーザーに"Delete Endangered Sharks"
へのオプションを提供することでdestroy
パスに投稿します。
編集が終了したら、ファイルを保存して閉じます。
ビューに加える最後の変更は、home
コントローラーに関連付けられたindex
ビューになります。 このビューがconfig/routes.rb
でアプリケーションのルートとして設定されていることを思い出してください。
このファイルを開いて編集します。
nano app/views/home/index.html.erb
Sharks are ancient
と記載されている行の列を見つけます。
〜/ rails-sidekiq / app / views / home / index.html.erb
. . . <div class="col-lg-6"> <h3>Sharks are ancient</h3> <p>There is evidence to suggest that sharks lived up to 400 million years ago. </p> </div> </div> </div>
次のコードをファイルに追加します。
〜/ rails-sidekiq / app / views / home / index.html.erb
. . . <div class="col-lg-6"> <h3>Sharks are ancient and SOME are in danger</h3> <p>There is evidence to suggest that sharks lived up to 400 million years ago. Without our help, some could disappear soon.</p> <p><%= button_to 'Which Sharks Are in Danger?', endangered_index_path, :method => :get, :class => "btn btn-primary btn-sm"%> </p> </div> </div> </div>
最初に強力なメッセージを共有し、次にendangered
index
ルート。ユーザーは、アプリケーションのその部分にアクセスできます。 そこから、絶滅危惧種のサメの情報をアップロードして表示できるようになります。
編集が終了したら、ファイルを保存して閉じます。
コードを配置したら、アプリケーションを起動してサメをアップロードする準備が整います。
ステップ5—Sidekiqを起動してアプリケーションをテストする
アプリケーションを開始する前に、データベースで移行を実行し、Sidekiqを開始してワーカーを有効にする必要があります。 Redisはすでにサーバー上で実行されているはずですが、確認することができます。 これらすべてが整ったら、アプリケーションをテストする準備が整います。
まず、Redisが実行されていることを確認します。
systemctl status redis
次のような出力が表示されます。
Output● redis-server.service - Advanced key-value store Loaded: loaded (/lib/systemd/system/redis-server.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2019-11-12 20:37:13 UTC; 1 weeks 0 days ago
次に、データベースの移行を実行します。
rails db:migrate
bundle exec sidekiq
コマンドを使用して、現在のプロジェクトバンドルのコンテキストでSidekiqを起動できるようになりました。
bundle exec sidekiq
Sidekiqがジョブを処理する準備ができていることを示す次のような出力が表示されます。
Output m, `$b .ss, $$: .,d$ `$$P,d$P' .,md$P"' ,$$$$$b/md$$$P^' .d$$$$$$/$$$P' $$^' `"/$$$' ____ _ _ _ _ $: ,$$: / ___|(_) __| | ___| | _(_) __ _ `b :$$ \___ \| |/ _` |/ _ \ |/ / |/ _` | $$: ___) | | (_| | __/ <| | (_| | $$ |____/|_|\__,_|\___|_|\_\_|\__, | .d$$ |_| 2019-11-19T21:43:00.540Z pid=17621 tid=gpiqiesdl INFO: Running in ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux] 2019-11-19T21:43:00.540Z pid=17621 tid=gpiqiesdl INFO: See LICENSE and the LGPL-3.0 for licensing details. 2019-11-19T21:43:00.540Z pid=17621 tid=gpiqiesdl INFO: Upgrade to Sidekiq Pro for more features and support: http://sidekiq.org 2019-11-19T21:43:00.540Z pid=17621 tid=gpiqiesdl INFO: Booting Sidekiq 6.0.3 with redis options {:id=>"Sidekiq-server-PID-17621", :url=>nil} 2019-11-19T21:43:00.543Z pid=17621 tid=gpiqiesdl INFO: Starting processing, hit Ctrl-C to stop
2番目のターミナルウィンドウを開き、rails-sidekiq
ディレクトリに移動して、アプリケーションサーバーを起動します。
アプリケーションをローカルで実行している場合は、次のコマンドを使用します。
bundle exec rails s
開発サーバーを使用している場合は、以下を実行します。
bundle exec rails s --binding=your_server_ip
ブラウザでlocalhost:3000
またはhttp://your_server_ip:3000
に移動します。 次のランディングページが表示されます。
どのサメが危険にさらされていますか?ボタンをクリックします。 絶滅危惧種のサメをアップロードしていないため、endangered
index
ビューに移動します。
絶滅危惧種のサメのインポートをクリックして、サメをインポートします。 サメが輸入されたことを知らせるステータスメッセージが表示されます。
インポートの開始も表示されます。 ページを更新して、テーブル全体を表示します。
Sidekiqのおかげで、絶滅危惧種のサメの大量のバッチアップロードは、ブラウザをロックしたり、他のアプリケーション機能に干渉したりすることなく成功しました。
ページの下部にあるホームボタンをクリックすると、アプリケーションのメインページに戻ります。
ここから、どのサメが危険にさらされていますか?をもう一度クリックします。 すでにサメをアップロードしているので、これでdata
ビューに直接移動します。
削除機能をテストするには、表の下にある絶滅危惧種のサメの削除ボタンをクリックします。 もう一度ホームページにリダイレクトされます。 どのサメが危険にさらされていますか?をもう一度クリックすると、index
ビューに戻り、サメを再度アップロードするオプションが表示されます。
これで、アプリケーションはSidekiqワーカーを使用して実行されます。これにより、ジョブを処理し、ユーザーがアプリケーションを適切に操作できるようになります。
結論
これで、Sidekiqが有効になっているRailsアプリケーションが機能するようになりました。これにより、コストのかかる操作をSidekiqが管理し、Redisがサポートするジョブキューにオフロードできます。 これにより、開発中にサイトの速度と機能を向上させることができます。
Sidekiqについて詳しく知りたい場合は、docsから始めるとよいでしょう。
Redisの詳細については、Redisリソースのライブラリをご覧ください。 製品ドキュメントを参照して、DigitalOceanでマネージドRedisクラスターを実行する方法についても学ぶことができます。