이번 주 Rails 업데이트는 개발 편의성과 시스템 안정성을 크게 향상시키는 여러 변경 사항을 포함하고 있습니다.
Active Storage 및 이미지 처리 개선
-
ActiveStorage 즉시 변형:
has_one_attached에process: :immediately옵션이 추가되어 첨부 파일 업로드 후 즉시 변형을 처리하고, 유효성 검사 시 이미지 메타데이터(예: 너비, 높이)를 즉시 사용할 수 있게 되었습니다. 이는 업로드된 IO를 직접 사용하여 재다운로드 없이 처리됩니다. -
PreviewImageJob Deprecation:
PreviewImageJob이 더 이상 Rails에서 호출되지 않으며 공식적으로 사용 중단(deprecated)되었습니다. -
SVG 렌더러 추가: 모델에
to_svg메서드를 정의하고 컨트롤러에서render svg: @page를 통해 SVG를 직접 렌더링할 수 있게 되었습니다.
ActiveRecord 및 핵심 프레임워크 변경
- **Model
with_lock 트랜잭션 yield:** `ActiveRecord::Base
with_lock이 이제 transaction과 동일하게 트랜잭션을 yield하여 after_commit`과 같은 콜백을 쉽게 추가할 수 있게 되었습니다.
-
디버그 이벤트 기본 활성화: Rails 외부에서 프레임워크 라이브러리를 사용하거나 테스트할 때 디버그 이벤트가 기본적으로 활성화됩니다.
-
로그 레벨 존중:
RAILS_LOG_LEVEL=debug설정이 이제 예상대로 동작하여 디버그 이벤트를 내보냅니다. -
오픈 리다이렉트 구조화된 이벤트:
config.action_controller.action_on_open_redirect = :notify설정 시 Active Support Notification 구독 없이도 구조화된 로그 이벤트를 자동으로 생성합니다.
개발 및 테스트 환경 개선
-
ERB strict locals 다중 라인 수정: 여러 라인에 걸쳐 작성된
locals:매직 코멘트가 이제 문제없이 작동합니다. -
태그 콘텐츠 결합:
tag.div("Hello ") { "World" }와 같은 코드 스니펫이<div>Hello World</div>를 반환하도록 수정되어 파라미터와 블록으로 제공된 콘텐츠가 결합됩니다. -
schema_dump 절대 경로 지원:
ActiveRecord::Tasks::DatabaseTasks.schema_dump_path가 이제 스키마 덤프 데이터베이스 구성에 절대 경로를 지원합니다. -
병렬 테스트 진단 용이성 향상: Rails가 테스트를 라운드 로빈 방식으로 워커에 할당하여
--seed및 워커 수가 동일할 때 테스트 간 의존성으로 인한 실패 재현 가능성을 높입니다. -
rails stats 파일 확장자 등록:
Rails::CodeStatistics에register_extension메서드가 추가되어rails stats로 코드 분석 시 포함될 파일 확장자를 등록할 수 있습니다. -
Inflections.instance_or_fallback 수정:
pluralize헬퍼가 사용자 정의 로케일에 대해:en폴백을 올바르게 따르도록 수정되었습니다. -
콘솔 명령 Executor 래핑: 콘솔 명령이 기본적으로 executor로 래핑되며,
-w또는--skip_executor로 비활성화할 수 있습니다.
Action Text 개선
-
ActionText::Editor 기본 클래스 및 TrixEditor 어댑터 추출: 서드파티 에디터가 Action Text와 통합할 수 있는 단일하고 확장 가능한 진입점을 제공하기 위해 기본 클래스와 어댑터가 추출되었습니다.
-
RemoteImage URL 유효성 검사: Action Text의
RemoteImage.from_node가RemoteImage객체를 생성하기 전에 URL을 검증하여 렌더링 시 발생할 수 있는ActionView::Template::Error를 방지합니다.