가장 주목할 만한 변화는 update_all
메서드가 PostgreSQL 및 SQLite에서 JOIN
구문 지원을 포함하게 된 것입니다. 이전에는 JOIN
절을 포함한 업데이트 쿼리 시 서브 쿼리를 사용해야 했고, 이로 인해 SET
절에서 조인된 테이블을 참조할 수 없었으나, 이제는 LIMIT
, ORDER
, GROUP BY
절이 사용되지 않는 한 직접 참조가 가능해졌습니다. 이는 MySQL 어댑터에서 오랫동안 지원되던 기능으로, 다른 데이터베이스 시스템에서도 일관된 쿼리 작성 경험을 제공하게 되었습니다. 예를 들어, Comment.joins(:post).update_all("title = posts.title")
와 같은 쿼리가 가능해졌습니다.
보안 및 안정성 측면에서는, 인증(auth) 생성기에서 암호 재설정 기능에 속도 제한(rate limit)이 도입되어, 공격자가 암호 재설정 양식을 스팸하는 것을 방지하고 무단 접근 시도를 완화하는 데 도움이 됩니다. 또한, 연결 오류 발생 시 자동으로 재시도 가능한 쿼리를 활성화하여 시스템 안정성이 향상되었습니다. 특히, sql.active_record
에 allow_retry
옵션이 추가되어 어떤 쿼리가 연결 오류 시 자동으로 재시도될 수 있는지 식별할 수 있게 되었습니다.
개발 효율성 증대를 위해 ActiveRecord::PendingMigration
액션을 사용하여 여러 데이터베이스를 마이그레이션할 때 발생하던 문제가 해결되었습니다. 이는 다중 데이터베이스 환경에서 개발 및 배포 워크플로우를 간소화하는 데 기여합니다. 더불어, 기본 Dockerfile 템플릿에서 재귀적 chown
명령을 제거함으로써 Docker 빌드 속도가 향상되어 개발자의 생산성을 높이는 데 일조합니다. 이번 주에는 총 19명의 기여자가 Rails 코드베이스 변경에 참여했습니다.