이번 주 Rails 업데이트: ActiveStorage 즉시 변형, SVG 렌더러 등 주요 개선 사항

'Tis the season for contributing to Rails

작성자
Rails Upgrade News
발행일
2025년 12월 12일

핵심 요약

  • 1 ActiveStorage에 `process: :immediately` 옵션이 추가되어 변형 이미지의 즉시 처리 및 유효성 검사 중 메타데이터 분석이 가능해졌습니다.
  • 2 Rails 코드베이스에 SVG 렌더러 추가, `Model#with_lock` 트랜잭션 yield, 디버그 이벤트 기본 활성화 등 다양한 기능 개선 및 버그 수정이 이루어졌습니다.
  • 3 Action Text 에디터 통합 개선 및 원격 이미지 URL 유효성 검사 추가 등 전반적인 안정성과 개발 편의성이 향상되었습니다.

도입

2025년 12월 12일, Claudio Baccigalupo는 이번 주 Rails 코드베이스에 적용된 수많은 개선 사항을 발표했습니다. 커뮤니티 검토를 위한 여러 문서 PR이 열려 있으며, Rails World 2026 업데이트 소식도 함께 전해졌습니다. 이번 주에는 ActiveStorage, ActiveRecord, Action Text 등 핵심 컴포넌트에 걸쳐 다양한 기능 추가 및 안정화 작업이 진행되었습니다.

이번 주 Rails 업데이트는 개발 편의성과 시스템 안정성을 크게 향상시키는 여러 변경 사항을 포함하고 있습니다.

Active Storage 및 이미지 처리 개선

  • ActiveStorage 즉시 변형: has_one_attachedprocess: :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::CodeStatisticsregister_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_nodeRemoteImage 객체를 생성하기 전에 URL을 검증하여 렌더링 시 발생할 수 있는 ActionView::Template::Error를 방지합니다.

결론

이번 주 Rails 업데이트는 ActiveStorage의 효율적인 이미지 처리부터 ActiveRecord의 트랜잭션 관리, Action Text의 확장성 및 안정성 강화에 이르기까지 Rails 개발의 여러 측면에서 중요한 진전을 보여주었습니다. 총 32명의 기여자가 참여하여 Rails 코드베이스의 지속적인 발전과 견고함을 입증했습니다. 이러한 개선 사항들은 Rails 애플리케이션의 성능, 안정성, 그리고 개발자 경험을 한층 더 향상시킬 것으로 기대됩니다.

댓글 0

로그인이 필요합니다

댓글을 작성하거나 대화에 참여하려면 로그인이 필요합니다.

로그인 하러 가기

아직 댓글이 없습니다

첫 번째 댓글을 작성해보세요!