この記事では、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をキャッシュストアとして使用するには、まずredis
gemが必要です。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アドレスやユーザーごとにリクエスト数を追跡し、設定したリミットを超えるリクエストを適切にブロックします。