Краткий справочник

Шпаргалка по советам и трюкам в Rails

Краткое справочное руководство по оптимизации производительности в Rails, горячим клавишам консоли, оптимизации запросов и продуктивности.

· Опубликовано

Полезные приемы продуктивности, шаблоны оптимизации памяти и трюки отладки для ежедневной разработки на Rails.

Оптимизация запросов и памяти

1. pluck против map

pluck извлекает данные напрямую из базы, не создавая в памяти объекты моделей ActiveRecord:

# МЕДЛЕННО: Создает 10 000 объектов User в оперативной памяти
User.all.map(&:email)

# БЫСТРО: Выбирает только колонку email в виде массива строк
User.pluck(:email)

2. Пакетная обработка с помощью find_each

Избегайте загрузки огромных таблиц в память за один раз:

# Загружает порциями по 1 000 записей
User.find_each(batch_size: 1000) do |user|
  user.sync_with_crm
end

Удобные приемы работы в консоли

# Получить результат последнего вычисленного выражения
user = User.find(1)
_ # Возвращает объект user

# Замер времени выполнения прямо в консоли
Benchmark.ms { 1000.times { User.count } }

# Перезагрузить код приложения без перезапуска консоли
reload!

Обновление временных меток (touch)

Обновление поля updated_at родительской модели при изменении дочерней ассоциации:

class Comment < ApplicationRecord
  belongs_to :article, touch: true
end

Полезные ссылки

Связанные темы