Последний визит: 30 октября 2026 16:24
Для нового проекта я бы взял генератор. Главный плюс: это обычный код в твоём репозитории, его можно прочитать целиком за полчаса. В Devise, когда над...
Все, кто начинал до Rails 8. Те, кто придёт через пару лет, будут знать Kamal, потому что он идёт в новом приложении из коробки. Я бы новый проект дел...
Это пояс, да. `config.time_zone` влияет на то, как Rails показывает и разбирает время, но в базе `created_at` всё равно лежит в UTC. `DATE(created_at)...
Потому что индекс построен по `email`, а ищете вы по `lower(email)`. Для планировщика это разные выражения, и обычный индекс тут не подходит. Путей дв...
Ещё поищите `update_column(:post_id, ...)` или `update_all` при переносе комментариев между постами, это тоже идёт мимо счётчика.
Он берёт соединение из пула только на время блока и сразу возвращает. Старый `connection` держит его за потоком до конца запроса или джобы. В Puma с п...
Грубое правило: модельный тест проверяет правила, а request-спек проверяет, что эндпоинт эти правила применяет и правильно отвечает. Все варианты нева...
Буду. По набережной пройдусь с вами, а потом домой на Петроградку через Биржевой, пока не развели
Если ключ нужен в фильтрах постоянно, я бы вынес его в обычную boolean-колонку: индекс проще, тип настоящий, валидации нормальные. Если пока не хочетс...
Артём, пять миллисекунд и минус 40 МБ на каждом воркере за одно обновление версии, без единой строчки кода. Это очень хорошая сделка. Основное время т...
Ещё в development можно открыть /rails/info/routes, там поиск прямо в браузере. А если файл на 900 строк, это повод когда-нибудь предложить разнести е...
Плюс уникальный индекс на `bonuses.payment_id`, если бонус по платежу бывает один. Последний рубеж, когда всё остальное подвело.
Можно и через `payment.with_lock` с проверкой статуса внутри, но условный UPDATE лучше: никто не ждёт на блокировке.
Цифры хорошие. Изменение схемы обычно режется на три PR: первый добавляет колонку и начинает писать в обе, второй переносит старые данные, третий пере...
Я бы записал в договорённости по шагам, по схеме расширения и сжатия: 1. релиз N: добавляем новое, старое не трогаем, код пишет в оба места; 2. перено...