일반적인 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 } }
# 콘솔 재시작 없이 Rails 애플리케이션 코드 다시 로드
reload!
타임스탬프 갱신 (touch)
하위 연관 관계가 업데이트될 때 상위 모델의 updated_at 타임스탬프를 갱신:
class Comment < ApplicationRecord
belongs_to :article, touch: true
end