이번 주 Rails 업데이트의 주요 내용은 다음과 같습니다.
1. Rails World CFP 개시
Rails World 컨퍼런스의 CFP(Call for Papers)가 3월 11일에 시작될 예정입니다. 2025년 랜딩 페이지는 현재 구축 중이며, 발표를 계획하고 있는 개발자들은 rubyonrails.org/world/ 페이지를 주시해야 합니다.
2. 개발 환경 개선
- Podman 지원 추가: 개발 컨테이너 사용 시 Docker에 의존할 필요 없이 Podman을 사용할 수 있도록 지침이 추가되었습니다. 이는 CI 환경에서
rails new
흐름을 테스트하는 데도 Podman이 사용되고 있음을 시사합니다.
3. 인증 및 오류 처리 강화
login_as(user)
테스트 헬퍼 추가: 인증 제너레이터를 사용할 때sign_in_as(user)
및sign_out
테스트 헬퍼 메서드가 제공되어 테스트 작성이 더욱 용이해졌습니다.ActiveSupport::ErrorReport#add_middleware
도입: ErrorReporter에 미들웨어 스택 개념이 도입되었습니다. 이 미들웨어는 보고되는 오류의 컨텍스트를 추가하거나 변경하는 데 사용되며,add_middleware
를 통해 추가할 수 있습니다.ActiveJob::Base#retry_on
및#discard_on
에report
옵션 추가: Active Job 사용 시, 작업 재시도 또는 폐기 시 발생하는 오류를 ErrorReporter에 보고하도록 지정할 수 있게 되었습니다.
4. 데이터베이스 상호작용 개선
- MySQL v8+ 및 MariaDB v10.6+ 인덱스 비활성화 지원: MySQL 및 MariaDB의 최신 버전에서 ‘invisible’ 또는 ‘ignored’ 인덱스를 활용할 수 있게 되었으며, 이는 마이그레이션을 통해 관리할 수 있습니다. 이를 통해 인덱스 관리가 더욱 유연해졌습니다.
- SQLite3용
ActiveRecord::Result
에 컬럼 타입 추가: SQLite3 어댑터를 사용할 때, 쿼리에서column_types
를 사용하여 컬럼 타입 정보를 얻을 수 있게 되었습니다. - 읽기 전용 역할로 비관적 잠금 시
ActiveRecord::ReadOnlyError
발생:current_preventing_writes
가 활성화된 상태에서lock!
을 호출할 경우 오류를 발생시켜 시나리오의 유용성을 개선했습니다. reverse_order
가implicit_order_column
존중:reverse_order
가 순서를 뒤집을 때 모델의implicit_order_column
을 고려하도록 수정되었습니다.
5. 기타 중요한 개선 및 버그 수정
- SafeBuffer의 MessagePack 직렬화 가능 타입 추가: MessagePack을 사용하여 쿠키를 직렬화할 때, SafeBuffer 타입 객체를 쿠키에 유지하려 할 때 발생하는 문제가 해결되었습니다.
LocalStore#read_multi_entries
수정: LocalStore 캐시 사용 시, 키에 대한 읽기 또는exists?
확인이 의도치 않게 연속적인fetch_multi
호출에서nil
값을 반환하는 버그가 해결되었습니다.- Timezone America/Asuncion 추가: 작년에 일광 절약 시간제를 중단함에 따라 새로운 IANA 시간대가 추가되었습니다.
MessageEncryptors
및MessageVerifiers
에prepend
메서드 추가:ActiveSupport::MessageEncryptors
및ActiveSupport::MessageVerifiers
에#prepend
메서드가 추가되었습니다. 이 메서드는#rotate
와 유사하게 동작하지만, 목록의 끝이 아닌 시작 부분에 추가되어Rails.application.message_verifiers
와 같이 미리 구성된 인스턴스에 대해 메시지가 생성되는 방식을 오버라이드할 수 있습니다.
이번 주에는 총 34명의 기여자가 Rails 코드베이스에 참여하여 활발한 개발이 이루어졌습니다.