본문으로 건너뛰기

Rails 5.2에서 6.0으로의 업그레이드 가이드: Zeitwerk와 Webpacker 전환

Upgrading from Rails 5.2 to Rails 6 - Modern Rails Features

작성자
발행일
2025년 12월 26일
https://blog.saeloun.com/2025/12/26/rails-5-to-6-upgrade-guide/

핵심 요약

  • 1 Rails 6 업그레이드의 핵심은 Zeitwerk 오토로더 도입에 따른 엄격한 파일 명명 규칙 준수와 Webpacker의 기본값 채택입니다.
  • 2 Ruby 2.5 이상의 버전이 필수적이며, Ruby 3.0으로의 원활한 전환을 위해 키워드 인자 경고가 발생하는 Ruby 2.7 사용을 권장합니다.
  • 3 멀티 데이터베이스 지원, 병렬 테스트, Action Mailbox 및 Action Text와 같은 신규 기능을 통해 애플리케이션의 성능과 확장성을 높일 수 있습니다.

도입

Rails 6는 2020년대를 대비하여 프레임워크를 현대화한 중대한 릴리스입니다. 이 가이드는 Rails 5.2에서 6.0으로 업그레이드하는 과정을 상세히 다루며, 특히 Zeitwerk 오토로더로의 전환과 Webpacker 도입 등 구조적인 변화에 초점을 맞춥니다. 안정적인 전환을 위해 Ruby 2.5 이상의 환경과 높은 테스트 커버리지가 선행되어야 함을 강조합니다.

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 전환 시 경고가 발생하지 않습니다.

결론

Rails 6 업그레이드는 단순한 버전 업데이트를 넘어 애플리케이션의 구조를 현대적 표준에 맞추는 과정입니다. Zeitwerk와 Webpacker 도입은 초기 설정 비용이 발생할 수 있으나, 장기적으로는 유지보수성과 성능 면에서 큰 이점을 제공합니다. 본 가이드를 따라 단계별로 검증하며 업그레이드를 진행하면 Ruby 3 및 Rails 7로 나아가는 견고한 기반을 마련할 수 있습니다.

댓글0

댓글 작성

댓글 삭제 시 비밀번호가 필요합니다.

이미 계정이 있으신가요? 로그인 후 댓글을 작성하세요.

0/1000
정중하고 건설적인 댓글을 작성해 주세요.