Sidekiqは、Ruby on Railsアプリケーションで非同期処理を実装するための強力なバックグラウンドジョブフレームワークです。Redisをデータストアとして利用し、マルチスレッドで高速にジョブを処理できます。
まず、GemfileにSidekiqを追加し、bundle install
を実行します。
gem 'sidekiq'
次に、config/application.rb
にSidekiqを設定します。
module MyApp
class Application < Rails::Application
config.active_job.queue_adapter = :sidekiq
end
end
Sidekiqでは、ジョブを処理するためにワーカー(Worker)クラスを作成します。
class SampleWorker
include Sidekiq::Worker
def perform(name)
puts "Hello, #{name}!"
end
end
作成したワーカーを非同期で実行するには、以下のように記述します。
SampleWorker.perform_async("Sidekiq")
遅延実行(指定時間後に実行)も可能です。
SampleWorker.perform_in(10.minutes, "Delayed Job")
Sidekiqを動作させるために、まずRedisを起動しておきます。その後、以下のコマンドでSidekiqを起動します。
bundle exec sidekiq
Sidekiqはジョブの管理画面を提供しています。config/routes.rb
に以下を追加すると、Web UI にアクセスできます。
require 'sidekiq/web'
mount Sidekiq::Web => '/sidekiq'
http://localhost:3000/sidekiq
にアクセスすると、ジョブの状態を確認できます。
Sidekiqを活用すると、Railsアプリケーションで非同期処理を簡単に実装できます。メール送信、画像処理、データのバッチ処理など、時間のかかる処理をバックグラウンドで実行することで、アプリケーションの応答性を向上させることができます。