自由帳

既に知っていることも含めて再アウトプット用に書きます✍️

[rack-attack] throttleの挙動確認方法

目的

前提条件

手順

1. ローカル環境をホワイトリストから除外する

# config/initializers/rack_attack.rb

  # NOTE: ローカル開発環境で挙動を確認するには下記をコメントアウトする
  safelist('allow from localhost', &:allowed_ip?) 

2. キャッシュを有効にする

ターミナルからrails dev:cacheを入力

tmp/caching-dev.txtが作成される(すでに作成されている場合は不要)

# config/environments/development.rb

  if Rails.root.join('tmp', 'caching-dev.txt').exist?
    config.action_controller.perform_caching = true
    config.action_controller.enable_fragment_cache_logging = true

    config.cache_store = :mem_cache_store,
                         "#{ENV['MEMCACHED_EXTERNAL_HOST'] || 'localhost'}:#{ENV['MEMCACHED_EXTERNAL_PORT'] || '11211'}",
                         { expire_in: 2.hours }
    config.public_file_server.headers = {
      'Cache-Control' => "public, max-age=#{2.days.to_i}",
    }
  else
    config.action_controller.perform_caching = false

    config.cache_store = :null_store
  end

3. サーバーを再起動し、リロード(⌘+R)しまくるとアクセス拒否される。

メモ

throttleの回数はキャッシュで管理している

関連URL