1. 통합 인터페이스 제공
Rails.app.creds는 require와 option 메서드를 통해 설정 값에 접근하며, 기존의 분절된 접근 방식을 하나로 통합합니다.
-
require: 키가 존재하지 않을 경우 KeyError를 발생시켜 필수 설정의 누락을 즉시 파악할 수 있게 합니다.
-
option: 기본값을 설정하거나 값이 없을 경우 nil을 반환하도록 하여 선택적인 설정 관리에 유용합니다.
2. 우선순위 및 명명 규칙
시스템은 환경 변수를 최우선으로 확인한 후, 값이 없을 경우 암호화된 자격 증명 파일을 조회합니다. 이는 배포 환경에 따른 유연한 설정을 가능케 합니다.
-
명명 규칙: 심볼 키는 대문자로 변환되며, 중첩된 키는 이중 언더스코어(
__)로 연결됩니다. 예:[:aws, :region]은AWS__REGION환경 변수와 매핑됩니다. -
Rails.app 별칭: Rails.application의 단축형인 Rails.app이 함께 도입되어 코드 작성이 더욱 간결해졌습니다.
3. 내부 구조 및 확장성
이 기능은 ActiveSupport의 세 가지 핵심 클래스를 기반으로 동작합니다.
-
EnvConfiguration: 환경 변수를 심볼 기반 키로 접근할 수 있게 합니다.
-
EncryptedConfiguration: 기존의 암호화된 설정을 통합 인터페이스에 맞춰 제공합니다.
-
CombinedConfiguration: 여러 백엔드를 결합하여 순차적으로 조회하며, 사용자가 직접 커스텀 백엔드(예: AWS Secrets Manager 연동)를 정의하여 추가할 수도 있습니다.