クイックリファレンス

Railsテクニック&Tips チートシート

RailsパフォーマンスTips、コンソールデバッグのショートカット、DBクエリ最適化、開発生産性向上のためのクイックリファレンス。

· 公開日

日々の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

Railsコンソール生産性ショートカット

# 直前に評価された式の結果を取得
user = User.find(1)
_ # 直前のuserオブジェクトを返す

# コンソール内で実行時間をベンチマーク計測
Benchmark.ms { 1000.times { User.count } }

# コンソールを再起動せずにRailsコードを再読み込み
reload!

タイムスタンプの更新 (touch)

子リレーションの更新時に親モデルの updated_at タイムスタンプを自動更新:

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

参考資料

関連テーマ