この記事では、Rack::Attackを使用するためのキャッシュストアとしてRedisを導入する手順について説明します。Redisは高速なインメモリデータストアであり、キャッシュやメッセージブローカーとして広く利用されています。
参考記事
Rack::Attackの使用については以下の記事を参照してください。
Redisのインストールと設定
-
Redisのインストール:
Redisは多くのOSで簡単にインストール可能です。以下はUbuntuとmacOSでのインストール方法です。-
Ubuntu:
sudo apt update sudo apt install redis-server -
macOS (Homebrewを使用):
brew install redis
インストール後、Redisサーバーが自動的に起動するかを確認し、起動していない場合は手動で起動します。
redis-server -
-
Redisの確認:
インストールが成功したかどうかを確認するために、次のコマンドを実行してみます。正常に動作していれば、PONGという応答が返ってきます。redis-cli ping -
RailsでのRedis設定:
RailsでRedisをキャッシュストアとして使用するには、まずredisgemが必要です。Gemfileに以下を追加し、bundle installを実行します。gem 'redis'次に、
config/environments/development.rb(開発環境の設定)やconfig/environments/production.rb(本番環境の設定)にRedisをキャッシュストアとして指定します。config.cache_store = :redis_cache_store, { url: 'redis://localhost:6379/0' }このURLは、使用しているRedisサーバーの設定によります。ローカルで開発している場合は
localhostを指定しますが、本番環境では適切なサーバーアドレスに変更してください。
Rack::AttackでのRedis利用
Rack::AttackがRedisを利用するように、config/initializers/rack_attack.rbにキャッシュストアの設定を追加します。
# 不要かもしれない
Rack::Attack.cache.store = ActiveSupport::Cache::RedisCacheStore.new(url: 'redis://localhost:6379/0')
この設定により、Rack::AttackはRedisを利用してIPアドレスやユーザーごとにリクエスト数を追跡し、設定したリミットを超えるリクエストを適切にブロックします。