이번 Rails 코드베이스 업데이트의 주요 변경 사항은 다음과 같습니다.
1. 콘솔에서 Active Record 쿼리 캐시 기본 비활성화
Rails 콘솔에서 Active Record 쿼리 캐시가 기본적으로 비활성화되도록 변경되었습니다. 이는 콘솔 세션 전반에 걸쳐 불필요한 캐시 활성화로 인한 잠재적인 성능 저하 및 예기치 않은 동작을 방지하기 위함입니다. 특정 세션에서 쿼리 캐시를 사용하려면 --query-cache 옵션을 사용하여 명시적으로 활성화할 수 있습니다. 이 변경은 개발 환경에서 보다 예측 가능한 동작과 빠른 응답을 제공하는 데 목적이 있습니다.
2. 중복되는 두문자어 처리를 위한 Inflections 수정
ActiveSupport::Inflector가 중복되는 두문자어를 더 잘 처리하도록 수정되었습니다. 이전에는 “USD”와 “USDC”처럼 유사한 두문자어가 정의되었을 때, 긴 두문자어가 짧은 두문자어의 영향을 받아 올바르게 처리되지 않는 문제가 있었습니다. 개선된 로직을 통해 이제 “USDC”.underscore는 “usdc”로 올바르게 변환됩니다.
- 예시 코드:
ruby ActiveSupport::Inflector.inflections(:en) do |inflect| inflect.acronym "USD" inflect.acronym "USDC" end "USDC".underscore # => "usdc"
3. insert_all!의 고유 인덱스 조회 건너뛰기
insert_all! 메서드가 on_duplicate: :raise 옵션을 사용할 때 불필요한 고유 인덱스 조회를 건너뛰도록 개선되었습니다. insert_all!는 ON CONFLICT 절 없이 일반 삽입을 수행하므로, 고유 인덱스가 필요하지 않은 경우에도 find_unique_index_for가 무조건 호출되어 복합 기본 키를 가진 테이블 등에서 불필요한 실패를 유발했습니다. 이제 insert_all!는 고유 인덱스가 필요하지 않을 때 해당 조회를 생략하여 오류를 방지하고 성능을 향상시킵니다. insert_all(on_duplicate: :skip) 및 upsert_all(on_duplicate: :update)는 충돌 대상 절 생성을 위해 여전히 고유 인덱스를 필요로 합니다.