1. 주요 아키텍처 변화
-
Zeitwerk 오토로더: 기존의 클래식 오토로더를 대체하며, 파일 이름과 클래스/모듈 이름이 정확히 일치해야 합니다.
rails zeitwerk:check명령어를 통해 명명 규칙 위반 사례를 사전에 점검해야 합니다. -
Webpacker 기본화: JavaScript 컴파일러로 Webpacker가 기본 설정되었습니다. 기존 Sprockets와 병행 사용할 수 있으나, 점진적인 이전을 권장합니다.
2. 신규 기능 및 성능 개선
-
멀티 데이터베이스: 단일 앱에서 여러 데이터베이스를 사용하거나 읽기 전용 복제본(Read Replica)을 설정할 수 있는 기능을 지원합니다.
-
병렬 테스트:
parallelize설정을 통해 여러 프로세스에서 테스트를 실행하여 실행 시간을 대폭 단축할 수 있습니다. -
Action Mailbox & Action Text: 수신 이메일 처리와 리치 텍스트 편집 기능을 프레임워크 레벨에서 지원합니다.
3. 주요 변경 사항 및 주의사항
-
메서드 제거:
update_attributes가 제거되었으므로update로 대체해야 합니다. -
Query 메서드:
where.not의 동작 방식이 변경되어 여러 조건을 사용할 때 AND 로직을 위해 체이닝이 필요합니다. -
Ruby 2.7 호환성: 키워드 인자 전달 시 해시 대신 명시적인 전개 연산자(
**)를 사용해야 Ruby 3.0 전환 시 경고가 발생하지 않습니다.