/
ArtSerg
/
IntegrationProject
Обзор
Документация
Войти
/
ArtSerg
/
IntegrationProject
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
lab3
config/initializers/rack_attack.rb
26 строк
718 B
Yuriy
rswag correct config
27 сен 2025, 14:31
27 сен 2025, 14:31
e05fc20
Код
Авторство
О чём код?
Rack::Attack.cache.store = ActiveSupport::Cache::RedisCacheStore.new( url: ENV.fetch("REDIS_URL") { "redis://localhost:6379/1" }, namespace: "rack:attack" ) Rack::Attack.throttle("requests by ip", limit: 100, period: 30) do |req| req.ip end Rack::Attack.throttled_response = lambda do |env| match_data = env['rack.attack.match_data'] limit= match_data[:limit] period = match_data[:period] retry_after = period - (Time.now.to_i % period) [ 429, { 'Content-Type' => 'application/json', 'X-Limit-Remaining' => '0', 'Retry-After' => retry_after.to_s }, [{ error: "Rate limit exceeded. Try again in #{retry_after} seconds." }.to_json] ] end