序章

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:

  1. git clone https://github.com/do-community/rails-bootstrap.git rails-sidekiq

に移動します rails-sidekiq ディレクトリ:

  1. cd rails-sidekiq

コードを操作するには、最初にプロジェクトの依存関係をインストールする必要があります。これは、Gemfileにリストされています。 SidekiqとRedisを使用するには、プロジェクトに sidekiqgemを追加する必要もあります。

を使用して、編集用にプロジェクトのGemfileを開きます nano またはお気に入りの編集者:

  1. 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をインストールします。

  1. bundle install

redisgemも要件としてインストールされていることが出力に表示されます。 sidekiq.

次に、Yarnの依存関係をインストールします。 このRails5プロジェクトは、webpackでアセットを提供するように変更されているため、JavaScriptの依存関係はYarnによって管理されるようになりました。 これは、プロジェクトにリストされている依存関係をインストールして検証する必要があることを意味します package.json ファイル。

走る yarn install これらの依存関係をインストールするには:

  1. yarn install

次に、データベースの移行を実行します。

  1. rails db:migrate

移行が完了したら、アプリケーションをテストして、期待どおりに機能していることを確認できます。 ローカルで作業している場合は、次のコマンドを使用して、ローカルバンドルのコンテキストでサーバーを起動します。

  1. bundle exec rails s

開発サーバーで作業している場合は、次のコマンドでアプリケーションを起動できます。

  1. 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 ディレクトリ、および次のコマンドでその内容を確認できます。

  1. cat db/sharks.csv

このファイルには、73の絶滅危惧種のサメとそのIUCNステータスのリストが含まれています。

私たちの Endangered モデルはこのデータと相関し、新しいデータを作成できるようになります Endangered このCSVファイルのインスタンス。 次のコマンドを使用してモデルを作成します。

  1. rails generate model Endangered name:string iucn:string

次に、を生成します Endangered とコントローラー index アクション:

  1. rails generate controller endangered index

これにより、アプリケーションの機能を構築するための開始点が得られますが、Railsが生成したコントローラーファイルにカスタムメソッドを追加する必要もあります。

今すぐそのファイルを開きます:

  1. nano app/controllers/endangered_controller.rb

Railsは、私たちが記入し始めることができる骨格の輪郭を私たちに提供してくれました。

まず、データを処理するために必要なルートを決定する必要があります。 おかげ generate controller コマンド、私たちは index そもそもメソッド。 これは、 index ビュー。ここでは、絶滅危惧種のサメをアップロードするオプションをユーザーに提示します。

ただし、ユーザーがすでにサメをアップロードしている可能性がある場合にも対処する必要があります。 この場合、アップロードオプションは必要ありません。 どういうわけか、インスタンスの数を評価する必要があります Endangered バッチアップロードがすでに行われていることを示すクラスが複数あるため、クラスはすでに存在します。

作成することから始めましょう set_endangered private 私たちの各インスタンスを取得するメソッド Endangered データベースからのクラス。 次のコードをファイルに追加します。

〜/ 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 のみに設定されます indexdata 絶滅危惧種のサメのデータを処理するルート。

次に、次のコードをに追加します 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
. . . 

私たちのインスタンスが0を超える場合 Endangered クラスでは、ユーザーをにリダイレクトします 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
. . .

を呼び出すことによって perform_async 上のメソッド AddEndangeredWorker クラスでは、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 メソッドには、 perform_async を呼び出す RemoveEndangeredWorker クラス–作成するもう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、ルート宣言が存在するファイル。

今すぐそのファイルを開きます:

  1. 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リクエストと一致しますが、 uploaddestroy ルートは、そのデータをアップロードおよび破棄する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ワーカーの定義

私たちは電話しました perform_async コントローラ内のSidekiqワーカーのメソッドですが、ワーカー自体を作成する必要があります。

まず、作成します workers 労働者のためのディレクトリ:

  1. mkdir app/workers

のファイルを開く AddEndangeredWorker ワーカー:

  1. 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

また、 retry: false 失敗した場合にSidekiqがアップロードを再試行しないようにするオプション。

次に、のコードを追加します 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

The perform メソッドはから引数を受け取ります perform_async コントローラで定義されたメソッドであるため、引数の値を揃えることが重要です。 ここで、私たちは渡します csv_file、コントローラーで定義した変数であり、 foreach CSVライブラリのメソッドを使用して、ファイル内の値を読み取ります。 設定 headers: true このループでは、ファイルの最初の行がヘッダーの行として扱われるようにします。

次に、ブロックはファイルから値を読み取り、 Endangered モデル: nameiucn. このループを実行すると、 Endangered CSVファイルの各エントリのインスタンス。

編集が終了したら、ファイルを保存して閉じます。

次に、このデータの削除を処理するワーカーを作成します。 のファイルを開く RemoveEndangeredWorker クラス:

  1. 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

The perform メソッド呼び出し destroy_allEndangered class。データベースからクラスのすべてのインスタンスを削除します。

編集が終了したら、ファイルを保存して閉じます。

ワーカーが配置されたら、次のレイアウトの作成に進むことができます。 endangered ビュー、および indexdata ユーザーが絶滅危惧種のサメをアップロードして表示できるようにするためのビュー。

ステップ4—レイアウトとビューテンプレートを追加する

ユーザーが絶滅の危機に瀕しているサメの情報を楽しむためには、2つのことに取り組む必要があります。 endangered コントローラ、およびのビューテンプレート indexdata ビュー。

現在、私たちのアプリケーションは、次の場所にあるアプリケーション全体のレイアウトを利用しています。 app/views/layouts/application.html.erb、ナビゲーションパーシャル、および sharks ビュー。 アプリケーションレイアウトはコンテンツブロックをチェックします。これにより、ユーザーがアプリケーションのどの部分を使用しているかに基づいて、さまざまなレイアウトを読み込むことができます。 home index ページでは、1つのレイアウトが表示され、個々のサメに関連するビューについては、別のレイアウトが表示されます。

再利用できます sharks 私たちのレイアウト endangered この形式はサメのデータをまとめて表示する場合にも機能するため、ビュー。

をコピーします sharks レイアウトファイルを作成して endangered レイアウト:

  1. cp app/views/layouts/sharks.html.erb app/views/layouts/endangered.html.erb

次に、次のビューテンプレートの作成に取り組みます。 indexdata ビュー。

を開きます index 最初のテンプレート:

  1. 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" %>

A form_tag 投稿アクションを endangered_upload_path –アップロード用に定義したルート。 で作成された送信ボタン submit_tag、ユーザーに "Import Endangered Sharks".

このコードに加えて、ICUNコードに関する一般的な情報が含まれているため、ユーザーは表示されるデータを解釈できます。

編集が終了したら、ファイルを保存して閉じます。

次に、のファイルを開きます data 見る:

  1. 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_tagssubmit_tags、に投稿する destroy ユーザーに次のオプションを提供することによるパス "Delete Endangered Sharks".

編集が終了したら、ファイルを保存して閉じます。

ビューに加える最後の変更は、 index 私たちに関連付けられているビュー home コントローラ。 このビューがでアプリケーションのルートとして設定されていることを思い出してください。 config/routes.rb.

このファイルを開いて編集します。

  1. 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>

最初に強力なメッセージを共有し、次に button_to GETリクエストを送信するヘルパー endangered index ルート、ユーザーにアプリケーションのその部分へのアクセスを許可します。 そこから、絶滅危惧種のサメの情報をアップロードして表示できるようになります。

編集が終了したら、ファイルを保存して閉じます。

コードを配置したら、アプリケーションを起動してサメをアップロードする準備が整います。

ステップ5—Sidekiqを起動してアプリケーションをテストする

アプリケーションを開始する前に、データベースで移行を実行し、Sidekiqを開始してワーカーを有効にする必要があります。 Redisはすでにサーバー上で実行されているはずですが、確認することができます。 これらすべてが整ったら、アプリケーションをテストする準備が整います。

まず、Redisが実行されていることを確認します。

  1. 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

次に、データベースの移行を実行します。

  1. rails db:migrate

これで、現在のプロジェクトバンドルのコンテキストでSidekiqを起動できます。 bundle exec sidekiq 指図:

  1. 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 ディレクトリを作成し、アプリケーションサーバーを起動します。

アプリケーションをローカルで実行している場合は、次のコマンドを使用します。

  1. bundle exec rails s

開発サーバーを使用している場合は、以下を実行します。

  1. 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クラスターを実行する方法についても学ぶことができます。