이번 주 Rails 업데이트의 핵심은 여러 중요한 개선 사항들에 있습니다. 첫째, 새로운 가이드 풀 리퀘스트가 Active Record 암호화 가이드를 업데이트하기 위해 제출되었으며, 이는 개발자들이 해당 영역에 대한 피드백을 제공할 수 있는 기회를 제공합니다. 이 외에도 두 개의 가이드 PR이 현재 검토 중입니다.
둘째, SQLite 어댑터의 affected_rows
로직이 정교하게 개선되었습니다. 기존에는 SELECT
와 같은 비변형 쿼리에서 #changes
가 재설정되지 않고, 캐스케이딩 삭제로 인해 #total_changes
가 과도하게 계산될 수 있는 문제가 있었습니다. 새로운 접근 방식은 #total_changes
를 사용하여 행이 영향을 받았는지 감지하고, #changes
를 통해 가장 정확한 개수를 반환함으로써 이러한 문제를 해결합니다. 이는 데이터베이스 작업의 정확성을 높이는 데 기여합니다.
셋째, ActiveRecord.with_transaction_isolation_level
이라는 새로운 메서드가 도입되어 블록 내에서 접근하는 모든 데이터베이스 풀에 대해 트랜잭션 격리 수준을 임시로 변경할 수 있게 되었습니다. 이 기능은 여러 데이터베이스나 샤드를 다룰 때 각 풀을 개별적으로 반복할 필요를 없애주어, 성능을 향상시키고 트랜잭션 관리를 간소화합니다. 이는 복잡한 데이터베이스 환경에서 개발 효율성을 크게 높일 수 있는 중요한 변화입니다.
마지막으로, Active Job 연속성 시스템에 상당한 개선이 이루어졌습니다. 각 단계에 대한 런타임 계측이 추가되었고, 구성 가능한 작업 재개 옵션이 도입되었습니다. 또한, 데이터베이스 트랜잭션 내부에서의 체크포인트 생성을 방지하고, 각 단계 이전에 체크포인트 타이밍을 조정하며, 재개 시 단계 순서가 변경되면 오류가 발생하도록 보장함으로써 시스템의 견고성과 예측 가능성을 향상시켰습니다.
이번 주에는 총 8명의 기여자가 Rails 코드베이스에 참여하여 이러한 개선 사항들을 가능하게 했습니다.