이번 주 Rails 업데이트의 주요 변경 사항들은 다음과 같습니다.
-
새로운 가이드 Pull Request (PR) 검토 요청: Active Record 암호화 가이드가 업데이트되었으며, 관련 전문 지식을 가진 사용자들의 검토와 피드백이 요청되었습니다. 이와 더불어 두 개의 다른 가이드 PR 또한 커뮤니티의 기여를 기다리고 있습니다. 이는 Rails 문서의 정확성과 최신화를 위한 지속적인 노력을 반영합니다.
-
SQLite 어댑터의
affected_rows
로직 개선: SQLite 어댑터에서affected_rows
를 계산하는 로직이 정교하게 개선되었습니다. 기존에는SELECT
와 같은 데이터를 변경하지 않는 쿼리에서#changes
값이 재설정되지 않거나,#total_changes
가 연쇄 삭제(cascading deletes)를 포함하여 실제보다 과도하게 계산되는 문제가 있었습니다. 새로운 접근 방식은#total_changes
를 활용하여 행의 영향 여부를 정확히 감지하고,#changes
를 통해 가장 정확한 영향을 받은 행의 개수를 반환함으로써 데이터베이스 작업 결과의 신뢰성을 높였습니다. -
블록 내 모든 데이터베이스 풀에 대한 트랜잭션 격리 수준 변경 기능 추가:
ActiveRecord.with_transaction_isolation_level
이라는 새로운 메서드가 도입되었습니다. 이 기능은 주어진 블록 내에서 접근하는 모든 데이터베이스 풀에 대해 트랜잭션 격리 수준을 일시적으로 변경할 수 있도록 합니다. 이는 여러 데이터베이스나 샤드(shard) 환경에서 각 풀을 개별적으로 순회할 필요 없이 일괄적으로 트랜잭션 관리를 수행할 수 있게 하여, 성능을 향상시키고 복잡한 트랜잭션 시나리오를 간소화하는 데 크게 기여합니다. -
Active Job 연속성 시스템 개선: Active Job의 연속성 시스템이 여러 측면에서 향상되었습니다. 각 단계에 대한 런타임 계측(instrumentation)이 추가되어 작업 흐름을 더 잘 추적할 수 있게 되었으며, 구성 가능한 작업 재개 옵션이 도입되었습니다. 또한 데이터베이스 트랜잭션 내부에서 체크포인트가 생성되는 것을 방지하고, 각 단계 이전에 체크포인트 타이밍을 조정하여 안정성을 높였습니다. 마지막으로, 작업 재개 시 단계 순서가 변경되면 즉시 오류를 발생시켜 데이터 불일치 가능성을 최소화합니다.
지난주 Rails 코드베이스에는 총 8명의 기여자가 참여하여 활발한 개발이 이루어졌음을 보여줍니다.