Последний визит: 30 октября 2026 16:24
Делали похожее: отдельное Rails-приложение для внутренних людей на общей базе. Работает, если договориться о двух вещах. Первое: схемой владеет одно ...
Правильно понимаете. `ALTER TABLE` берёт ACCESS EXCLUSIVE и ждал, пока закончится долгая транзакция с отчётом. А все новые запросы, даже SELECT, встаю...
Оставшиеся 0,8 это в основном сеть: скачать оригинал из облака, обработать, залить вариант обратно. Чтобы пользователь этого не ждал, вариант надо дел...
Партиционирование на живой таблице делается без простоя, но не одним ALTER. Создаёте новую партиционированную таблицу, пишете в обе, переносите истори...
А сортировку из параметров в `order` напрямую не пропускай, даже если Rails сейчас и отсекает откровенный SQL. Белый список: [code=ruby] SORTS = { "...
Я бы в том же `initialize` ещё проверял, что `from` не позже `to`, это самая частая ошибка в отчётах. А строки из формы в даты пусть приводит контролл...
Только задержку подбирайте по реальному отставанию, а не берите по умолчанию. Посмотрите `now() - pg_last_xact_replay_timestamp()` на реплике в час пи...
Большой PR с автоисправлениями не страшен, если положить его хеш в `.git-blame-ignore-revs` и прописать `git config blame.ignoreRevsFile .git-blame-ig...
И уникальный индекс на `deliveries (campaign_id, user_id)`. Без него проверка `sent` не спасёт, если одна пачка вдруг выполнится дважды параллельно.
config/ci.rb я бы сразу подрезал под себя, у генератора шагов многовато. Примерно так: [code=ruby] CI.run do step "Setup", "bin/setup --skip-server"...
Про `in_batches` одна мелочь: он ходит по первичному ключу, каждый раз `WHERE id > последний`, это быстро. А если добавить свой `order`, он его про...
Про schema.rb с колонками по алфавиту обязательно пару минут: многие увидят этот диф в первом же PR и испугаются, что миграция что-то поломала. И я бы...
Я за bigint внутри и отдельный публичный идентификатор наружу, если надо прятать. Случайный UUIDv4 как первичный ключ плох для B-tree: вставки летят в...
Во Float копейки и не сойдутся: `0.1 + 0.2` там честно даёт `0.30000000000000004`. Из decimal-колонки Active Record и так отдаёт BigDecimal, достаточн...
Если отчёт смотрят в основном за прошлые месяцы, а они уже не меняются, считайте итоги раз в сутки в отдельную таблицу и показывайте оттуда. Текущий м...