rate_limit в контро...
 
Уведомления
Очистить всё

rate_limit в контроллере не срабатывает локально, хотя на стейдже работает

3 Сообщения
3 Пользователи
5 Реакции
622 Просмотры
Юлия Ф.
Сообщения: 11
Автор темы
Разобрался с блоками фулстек-разработчица
Присоединился: 3 года назад
[#63]

Rails 8.0, поставила ограничение на форму обратной связи:

class FeedbacksController < ApplicationController
  rate_limit to: 3, within: 1.minute, only: :create
end

На стейдже после третьей отправки приходит 429, как и надо. Локально отправляю сколько угодно, ни одной ошибки, логи чистые. Что не так с development?


2 ответа
GalinaKorneva
Сообщения: 30
Читает чужие PR бэкенд-разработчица
Присоединился: 4 года назад

Кеш. rate_limit считает попытки в Rails.cache, а в development по умолчанию :null_store, пока кеш не включён. Он ничего не запоминает, счётчик всегда ноль. Включи bin/rails dev:cache, появится tmp/caching-dev.txt и нормальное хранилище, и ограничение заработает. Или передай хранилище явно через store:.


Ответ
1 ответ
Илья50
Присоединился: 4 года назад

Дружит с bundler фрилансер
Сообщения: 6

Попадался на то же самое, только в тестах: там тоже null_store, тест на 429 у меня прошёл только с подменой кеша на memory_store


Ответ