첫 번째 주요 변경 사항은 RFC 9111에 의거하여 must-understand
지시어가 추가된 것입니다. 이 지시어는 캐시가 응답 상태 코드의 의미를 반드시 이해하거나, 그렇지 않으면 해당 응답을 폐기해야 함을 명시합니다. 이는 캐시의 올바른 동작을 보장하기 위해 no-store
지시어와 함께 사용되도록 강제됩니다. 예를 들어, ArticlesController
에서 특정 조건(@article.special_format?
)을 만족하는 경우 must_understand
를 호출하고 203 Non-Authoritative Information
상태 코드를 반환하여 캐시 동작을 명확히 제어할 수 있습니다.
두 번째 변경 사항은 쿠키 길이 계산에 쿠키 이름의 길이를 포함하도록 Rails가 업데이트된 점입니다. 기존에는 쿠키 값만 4KB 제한에 포함되었으나, 이제는 쿠키 이름까지 포함하여 총 길이가 4KB를 초과하지 않도록 검증함으로써 브라우저 표준과의 정합성을 확보했습니다. 이는 쿠키를 사용하는 애플리케이션에서 잠재적인 호환성 문제를 방지하고, 보다 견고한 웹 개발을 가능하게 합니다.
세 번째이자 가장 중요한 변경 사항 중 하나는 ActiveRecord에 with_default_isolation_level
메서드가 도입된 것입니다. 이 메서드는 특정 코드 블록에 대한 기본 데이터베이스 격리 수준을 설정할 수 있는 기능을 제공합니다. 이는 대규모 애플리케이션을 새로운 격리 수준으로 마이그레이션할 때 특히 유용합니다. 예를 들어, ApiV2Controller
와 같은 기본 컨트롤러에서 Product.with_default_isolation_level(:read_committed)
블록 내에 코드를 래핑함으로써, 해당 컨트롤러를 상속받는 모든 컨트롤러가 지정된 격리 수준을 따르도록 강제할 수 있습니다. 이 기능은 트랜잭션 동작의 일관성을 보장하고, 점진적인 마이그레이션을 용이하게 하여 애플리케이션의 안정적인 전환을 지원합니다. 이 외에도 지난주 Rails 코드베이스에는 총 15명의 기여자가 참여하여 다양한 개선 사항들을 반영했습니다.