본 문서는 2025년 4월 4일자 Rails 위클리 업데이트 내용을 요약합니다. 이번 주에는 Rails World 2025 발표 제안 마감일 알림과 함께, 프레임워크의 성능, 표준 준수, 개발 편의성 향상을 위한 여러 중요한 변경 사항들이 소개되었습니다. 핵심적으로는 ActiveRecord의 트랜잭션 격리 수준 제어 기능 추가와 캐싱 및 네트워킹 관련 업데이트들이 포함됩니다.
가장 먼저 주목할 점은 Rails World 2025 발표 제안(CFP) 마감일이 4월 10일로 다가왔다는 알림입니다. 관심 있는 개발자라면 놓치지 말고 제안을 제출해야 할 시점입니다.
이어서 기술적인 업데이트입니다. HTTP 캐싱과 관련하여 RFC 9111에 따라 must-understand
지시문이 추가되었습니다. 이 지시문은 캐시가 응답 상태 코드의 의미를 반드시 이해하거나, 그렇지 않으면 응답을 폐기해야 함을 명시합니다. 이는 no-store
와 함께 사용되도록 강제되어 올바른 캐시 동작을 보장합니다.
ruby
class ArticlesController < ApplicationController
def show
@article = Article.find(params[:id])
if @article.special_format?
must_understand
render status: 203 # Non-Authoritative Information
else
fresh_when @article
end
end
end
ActiveSupport의 RedisCacheStore는 캐시 항목 삭제 시 DEL
명령어 대신 UNLINK
명령어를 사용하도록 변경되었습니다. UNLINK
는 비동기적으로 키를 제거하여 블로킹을 줄이고 성능을 향상시키는 장점이 있습니다.
Rails.cache
에는 read_counter
와 write_counter
두 가지 새로운 메서드가 추가되었습니다. 이 메서드들을 통해 증가/감소되는 카운터 값을 보다 명확하게 읽고 쓸 수 있게 되었습니다.
ruby
Rails.cache.write_counter("foo", 1)
Rails.cache.read_counter("foo") # => 1
Rails.cache.increment("foo")
Rails.cache.read_counter("foo") # => 2
SessionsController#destroy 템플릿에서 로그아웃 후 리다이렉트 시 사용되는 상태 코드가 RFC 9110 표준에 맞춰 302(Found)에서 303(See Other)으로 변경되었습니다. 이는 POST 요청 후 리다이렉트 시 GET 메서드를 사용하도록 클라이언트에 명확히 지시합니다.
쿠키 길이 계산 시 쿠키의 이름 길이도 포함하도록 업데이트되었습니다. 이는 브라우저 표준에 맞춰 쿠키의 총 크기가 4KB 제한을 넘지 않도록 정확하게 검증하는 데 도움이 됩니다.
이번 업데이트의 주요 기능 중 하나는 ActiveRecord에 도입된 with_default_isolation_level
메서드입니다. 이 메서드를 사용하면 특정 코드 블록에 대해 기본 데이터베이스 트랜잭션 격리 수준을 설정할 수 있습니다. 이는 대규모 애플리케이션을 새로운 격리 수준으로 마이그레이션할 때, 전체 애플리케이션에 일괄 적용하기 전에 특정 영역(예: 특정 컨트롤러 하위 클래스)에만 점진적으로 적용하여 부드러운 전환을 가능하게 합니다.
```ruby class ApiV2Controller < ApplicationController around_action :set_isolation_level
def set_isolation_level Product.with_default_isolation_level(:read_committed) do yield end end end # forces all controllers that subclass from ApiV2Controller to start getting new isolation level ```
마지막으로, Postgres 어댑터 사용 시 structure_load_flags
옵션이 기본 플래그에 추가되는 순서 오류가 수정되었습니다. 이전에는 추가 플래그가 뒤에 붙어 일부가 무시될 수 있었으나, 이제는 추가 플래그가 앞에 붙도록 변경되어 의도대로 동작합니다.
이번 주에는 총 15명의 기여자가 Rails 코드베이스 개선에 참여했습니다. 이러한 지속적인 기여는 Rails 생태계의 건강함을 보여줍니다.
결론적으로, 이번 주 Rails 업데이트는 성능 최적화(Redis UNLINK), 웹 표준 준수 강화(HTTP 캐싱, 리다이렉트 상태 코드, 쿠키 길이), 개발 편의성 향상(Cache 카운터 메서드), 그리고 대규모 애플리케이션 마이그레이션 지원(ActiveRecord 격리 수준 제어) 등 여러 방면에서 이루어졌습니다. 이러한 개선들은 Rails 애플리케이션의 안정성과 효율성을 높이는 데 기여할 것입니다. 다음 업데이트까지 이러한 변화들을 숙지하고 활용하는 것이 중요합니다.