Rails 기본값은 Rails 팀이 권장하는 구성 설정으로, 애플리케이션의 동작 방식에 영향을 미칩니다. 이 값들은 application.rb
또는 initializers
파일에서 설정될 수 있으며, ActiveRecord
, ActionDispatch
, ActionView
등 Rails 스택 전반에 걸쳐 영향을 줍니다. 예를 들어, Rails 5 이전에는 belongs_to
연관 관계가 기본적으로 필수(required)가 아니었으나, Rails 5부터 true
로 변경되어 데이터 무결성을 강화하는 방향으로 진화했습니다. 이러한 기본값 변경의 주된 이유는 더 나은 개발 관행 수용, 반복적인 코드(boilerplate code) 감소, 그리고 향후 기능의 비권장(deprecation)에 대한 준비입니다.
Rails는 앱이 업그레이드 시 이전 버전의 기본값을 유지하도록 config.load_defaults
설정을 통해 동작을 고정합니다. 이 설정은 Rails 업그레이드 과정에서 자동으로 변경되지 않으므로, 개발자는 수동으로 new_framework_defaults_*.rb
파일에 주석 처리된 새로운 기본값들을 하나씩 활성화하며 점진적으로 새로운 동작을 적용할 수 있습니다. Rails 5.1부터는 이 파일의 형식이 변경되어, 새로운 기본값이 주석 처리된 채로 제공되어 개발자가 의도적으로 선택하여 적용하도록 유도합니다.
오래된 기본값을 유지하는 것은 단기적으로는 앱이 깨지는 것을 방지하지만, 장기적으로는 새로운 기능, 보안 업데이트, 성능 개선 등의 이점을 놓치게 만들며, 향후 Rails 버전에서 해당 기본값이 완전히 제거될 경우 더 큰 문제를 야기할 수 있습니다. 또한, 최신 버전의 기본값을 기대하는 Gem이나 튜토리얼과의 호환성 문제도 발생할 수 있습니다. 따라서 기본값 업그레이드는 피할 수 없는 작업이며, 이를 미루는 것은 결국 더 큰 고통으로 이어집니다.
기본값 업그레이드를 위한 전략으로 연사는 ‘느리고 꾸준한(slow and steady)’ 접근 방식을 제안합니다. 이는 철저한 준비 작업(테스트 커버리지 확인, 테스트 통과), 심도 있는 연구(업그레이드 가이드, new_framework_defaults
파일, Rails 소스 코드 및 Pull Request 검토), 그리고 점진적인 설정 활성화(하나씩 주석 해제, 필요시 피처 플래그 사용, 특정 기본값 유지 결정)를 포함합니다. 각 변경 사항을 적용한 후에는 반드시 테스트, 배포, 모니터링을 통해 예상치 못한 문제를 확인해야 합니다. 모든 기본값을 활성화한 후에는 해당 파일을 삭제하고 config.load_defaults
버전을 현재 Rails 버전으로 업데이트할 수 있습니다.