이번 주 Rails 소식: 주요 업데이트 및 개선 사항

Support joins in update_all for PG and SQLite and more

작성자
Ruby on Rails 소식지
발행일
2025년 02월 07일

핵심 요약

  • 1 Rails Foundation에 Clio가 합류했으며, Rails 코드베이스에 여러 중요한 업데이트가 적용되었습니다.
  • 2 Active Record의 `update_all` 메서드가 PostgreSQL 및 SQLite에서 JOIN 구문 지원을 추가하여 쿼리 기능이 확장되었습니다.
  • 3 암호 재설정 속도 제한, 쿼리 재시도 가능성 개선, Docker 빌드 속도 향상 등 전반적인 시스템 안정성 및 개발 효율성 증대가 이루어졌습니다.

도입

2025년 2월 7일 Wojtek이 발표한 이번 주 Rails 코드베이스의 주요 변경 사항을 다룹니다. Rails Foundation에 Clio가 새로운 기여 멤버로 합류했다는 소식과 함께, Active Record의 기능 개선 및 전반적인 개발 환경 최적화에 초점을 맞춘 여러 기술적 업데이트가 포함되어 있습니다. 이번 업데이트는 Rails의 견고성과 사용자 편의성을 동시에 향상시키는 데 기여할 것으로 보입니다.

가장 주목할 만한 변화는 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_recordallow_retry 옵션이 추가되어 어떤 쿼리가 연결 오류 시 자동으로 재시도될 수 있는지 식별할 수 있게 되었습니다.

개발 효율성 증대를 위해 ActiveRecord::PendingMigration 액션을 사용하여 여러 데이터베이스를 마이그레이션할 때 발생하던 문제가 해결되었습니다. 이는 다중 데이터베이스 환경에서 개발 및 배포 워크플로우를 간소화하는 데 기여합니다. 더불어, 기본 Dockerfile 템플릿에서 재귀적 chown 명령을 제거함으로써 Docker 빌드 속도가 향상되어 개발자의 생산성을 높이는 데 일조합니다. 이번 주에는 총 19명의 기여자가 Rails 코드베이스 변경에 참여했습니다.

결론

이번 주 Rails 업데이트는 Active Record의 쿼리 기능 확장, 보안 강화, 시스템 안정성 향상, 그리고 개발 워크플로우 최적화에 중점을 두었습니다. 특히 `update_all`의 `JOIN` 지원과 암호 재설정 속도 제한은 Rails 애플리케이션의 성능과 보안을 동시에 개선하는 중요한 진전으로 평가됩니다. 지속적인 코드베이스 개선을 통해 Rails는 개발자들에게 더욱 강력하고 안정적인 프레임워크를 제공하며, 이는 활발한 커뮤니티 기여 덕분에 가능했습니다. 다음 업데이트가 기대됩니다.

댓글 0

댓글 작성

0/1000
정중하고 건설적인 댓글을 작성해 주세요.

아직 댓글이 없습니다

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