이번 주 Rails 업데이트의 핵심은 여러 방면에서 프레임워크의 효율성과 유용성을 증대시키는 데 있습니다. 첫째, PostgreSQL 데이터베이스 환경에서 ‘덤프된 모델 스키마 로딩 쿼리 제거’는 중요한 성능 개선입니다. 이는 스키마 캐시 파일이 설정된 경우, 부팅 시 속성 메서드를 정의할 때 타입 맵을 로드하기 위해 데이터베이스 연결을 열 필요가 없어지면서 견고성을 향상시킵니다.
둘째, ActiveSupport::Testing::TimeHelpers#freeze_time
헬퍼가 이제 날짜 또는 시간 인수를 직접 받아들일 수 있게 되어 테스트 코드 작성 시 유연성이 크게 증대되었습니다. 이는 특정 시간으로 시간을 고정해야 하는 테스트 시나리오에서 더욱 직관적인 사용을 가능하게 합니다.
셋째, index_exists?
메서드에서 컬럼 이름을 선택적으로 허용하도록 변경되었습니다. 이는 remove_index
시그니처와 일관성을 유지하며, 인덱스 이름이 반드시 컬럼 이름에서 파생될 필요가 없도록 합니다.
넷째, VSCode 외부에서 Dev Container 정보를 사용할 수 있는 스크립트가 추가되었습니다. 이 스크립트는 Dev Container JSON 파일을 읽어 해당 정보에 기반한 Docker 명령을 실행함으로써, VSCode를 사용하지 않는 개발자들에게 개발 환경 설정의 유연성을 제공합니다.
다섯째, 프로그레시브 웹 앱(PWA) 지원을 강화하기 위해 애플리케이션 레이아웃에 application-name
메타 태그가 추가되었습니다. 이는 웹 애플리케이션의 사용자 경험을 개선하고, 다양한 플랫폼에서의 접근성을 높이는 데 기여합니다.
여섯째, JSON 직렬화된 속성이 심볼화된 키를 반환할 수 있도록 개선되었습니다. ActiveRecord::Coder::JSON
인스턴스화 시 symbolize_names
옵션을 전달할 수 있게 되어, 데이터 접근 시 편의성이 향상됩니다.
마지막으로, 비영구화된(unpersisted) 연관 관계와 함께 insert_all
및 upsert_all
을 사용하는 것이 Deprecate되었습니다. 이러한 메서드를 비영구화된 레코드를 포함하는 연관 관계에 사용할 경우 Deprecation 경고가 표시되며, 이는 Rails 8.2에서 오류로 전환될 예정입니다. 이는 데이터 일관성을 유지하고 잠재적인 데이터 손실을 방지하기 위한 중요한 변경 사항입니다.