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"]와 같이 명시적으로 설정하는 것이 권장됩니다.