본문으로 건너뛰기

Rails.app.revision으로 배포 추적하기

Track Deployments with Rails.app.revision

작성자
Rails Upgrade News
발행일
2026년 01월 09일
https://codewithrails.com/blog/rails-app-revision/

핵심 요약

  • 1 Rails 8.2에 도입된 `Rails.app.revision`은 프로덕션 환경의 코드 버전을 추적하는 표준화된 방법을 제공합니다.
  • 2 이 기능은 `REVISION` 파일 또는 Git 커밋 SHA를 자동으로 감지하여 배포 식별자를 반환하며, 기존의 수동 코드 추적을 대체합니다.
  • 3 에러 보고, 배포 확인, 캐시 무효화 등 다양한 배포 관리 작업에 활용되어 개발 생산성을 향상시킵니다.

도입

Rails 8.2 버전부터 `Rails.app.revision`이라는 새로운 기능이 도입되어, 프로덕션 환경에서 실행 중인 코드 버전을 효율적으로 추적할 수 있게 되었습니다. 이는 기존에 개발자들이 에러 보고나 캐시 키 관리를 위해 Git 커밋을 수동으로 추적하던 관행을 표준화하고 내장화한 것으로, 배포 프로세스의 투명성과 안정성을 크게 향상시키는 중요한 개선 사항입니다. 이 기능을 통해 개발팀은 배포된 코드의 정확한 버전을 쉽게 식별하고 관리할 수 있습니다.

Rails.app.revision의 주요 변경 사항

Rails.app.revision 메서드는 현재 배포 식별자를 반환합니다. 이 메서드는 기본적으로 다음 두 가지 위치에서 배포 정보를 찾습니다.

  • 애플리케이션 루트에 있는 REVISION 파일 (Capistrano와 같은 배포 도구에서 일반적으로 생성)

  • REVISION 파일이 없는 경우, 현재 Git 커밋 SHA

예시: ruby Rails.app.revision # => "3d31d593e6cf0f82fa9bd0338b635af2f30d627b"

이 기능이 중요한 이유

배포된 코드 버전을 정확히 아는 것은 여러 면에서 중요합니다.

  • 에러 보고: 예외에 리비전 정보를 첨부하여 특정 커밋과 버그를 연결할 수 있습니다.

  • 배포 확인: 최신 배포가 실제로 적용되었는지 확인할 수 있습니다.

  • 캐시 무효화: 캐시 키에 리비전을 포함하여 배포 시 캐시를 효과적으로 무효화할 수 있습니다.

  • 모니터링 대시보드: 배포별 성능 지표를 추적할 수 있습니다.

이전에는 개발자가 수동으로 리비전 파일을 읽거나 Git 명령어를 실행하는 코드를 작성해야 했지만, 이제는 Rails.app.revision 하나로 간결하게 처리됩니다.

활용 방법

  • 기본 동작: Capistrano와 같이 REVISION 파일을 생성하는 도구를 사용하는 경우, 별도 설정 없이 작동합니다. Git 저장소 내에서는 REVISION 파일이 없으면 현재 Git SHA를 반환합니다.

  • 커스텀 설정: config/application.rb에서 config.revision을 명시적으로 설정할 수 있습니다.
    • config.revision = ENV["GIT_SHA"] (컨테이너 환경)
    • config.revision = -> { File.read("BUILD_ID").strip } (지연 평가를 위한 Proc)
  • 에러 보고 통합: Rails.error.report 호출 시 리비전 정보가 자동으로 컨텍스트에 추가됩니다.

  • 캐시 키 활용: 캐시 키에 Rails.app.revision을 포함하여 배포 시 캐시를 효과적으로 관리할 수 있습니다.

주의 사항

  • REVISION 파일이 없고 Git 저장소도 아닌 경우 nil을 반환할 수 있습니다.

  • Git 폴백은 .git 디렉토리가 존재할 때만 작동합니다 (일부 Docker 빌드에서는 제외될 수 있음).

  • 컨테이너화된 배포에서는 config.revision = ENV["GIT_SHA"]와 같이 명시적으로 설정하는 것이 권장됩니다.

결론

`Rails.app.revision`은 배포된 코드 버전을 추적하는 일반적인 패턴을 표준화하여 개발자의 삶의 질을 향상시키는 작은 개선 사항입니다. 이 내장 메서드를 통해 기존에 수동으로 리비전을 추적하던 코드를 제거하고 더욱 간결하고 안정적인 배포 관리 워크플로우를 구축할 수 있습니다. 이는 특히 복잡한 프로덕션 환경에서 코드 일관성과 문제 해결 효율성을 높이는 데 기여할 것입니다.

댓글0

댓글 작성

댓글 삭제 시 비밀번호가 필요합니다.

이미 계정이 있으신가요? 로그인 후 댓글을 작성하세요.

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