이번 업데이트에서는 여러 중요한 수정 및 개선 사항이 포함되었습니다. 첫째, Rails 콘솔 프롬프트가 표준이 아닌 환경(예: staging)에서도 마젠타(Magenta) 색상으로 표시되도록 개선되어, 개발 환경 구분이 더욱 명확해졌습니다. 둘째, 개별 app:update
명령(예: app:update:configs
, app:update:bin
)이 더 이상 단독으로 실행되지 않던 회귀 버그가 수정되어, 이제 앱 로딩이 필요한 해당 명령들이 정상적으로 작동합니다. 셋째, 템플릿 렌더링 중 발생하는 ArgumentError
의 백트레이스가 유실되어 디버깅이 어려웠던 문제가 해결되었습니다. 이제 strict locals와 관련 없는 ArgumentError
는 원본 백트레이스를 보존하며 다시 발생시켜 개발자가 문제의 원인을 쉽게 파악할 수 있도록 돕습니다. 이와 더불어, Rails 5.1에서 도입된 오래된 회귀 버그인 레이아웃의 로컬 변수 접근성 문제도 수정되어, 레이아웃에서도 render
에 전달된 로컬 변수에 접근이 가능해졌습니다.
또한, schema.rb
파일 내의 테이블 컬럼들이 알파벳 순으로 정렬되도록 변경되었습니다. 이전에는 생성 순서로 정렬되어 동시 작업 시 병합 충돌(merge conflicts)을 유발할 수 있었으나, 이 변경으로 인해 협업 효율성이 증대될 것으로 예상됩니다. ActiveSupport::Testing::NotificationAssertions
의 assert_notification
은 기본적으로 페이로드 서브셋과 일치하도록 업데이트되어, 알림 페이로드에 불필요한 키 값이 있더라도 검증이 성공하며, 매칭된 알림을 유지하여 더 맞춤화된 검증을 수행할 수 있게 되었습니다. Active Storage 관련하여, ruby-vips
, mini_magick
, image_processing
등을 사용하는 플러그인들이 부팅 시 구성된 플러그인을 로드하도록 변경되어, 요청 중 코드 로딩을 방지하고 잠재적인 오류를 부팅 시 즉시 확인할 수 있게 되었습니다. CI 템플릿에는 RAILS_MASTER_KEY
플레이스홀더가 도입되어, 사용자 지정 자격 증명 또는 config.require_master_key
가 활성화된 경우에도 CI가 제대로 작동하도록 개선되었습니다. 불필요한 ActiveStorage::Blob
로딩을 피하기 위해 assets:precompile
과 같은 작업에서는 ActiveStorage
전체 코드가 아닌 관련 부분만 로드되도록 최적화되었습니다. 마지막으로, collection_check_boxes
가 숨겨진 <input>
을 생성할 때 html_options[:form]
을 존중하도록 변경되었습니다.
주요 기능 폐기(Deprecations)로는 Ruby 1.8 시절의 유물인 String#mb_chars
와 AS::Multibyte::Chars
API가 폐기되었으며, Rails 내부에서 한 번만 사용되던 ActiveSupport::Configurable
도 더 이상 사용되지 않도록 폐기되었습니다.