Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

환경 변수

English | 中文 | 日本語 | 한국어 | Français | Deutsch | Español | Português | Svenska | Suomi | Nederlands

환경 변수 이름은 confique로 스키마에 선언합니다.

#![allow(unused)]
fn main() {
#[derive(Debug, Config)]
struct DatabaseConfig {
    #[config(env = "APP_DATABASE_URL")]
    url: String,

    #[config(default = 16)]
    #[config(env = "APP_DATABASE_POOL_SIZE")]
    pool_size: u32,
}
}

rust-config-treeconfique::Config::META에서 이 이름을 읽고 각 환경 변수를 정확한 필드 경로에 매핑하는 Figment 프로바이더를 만듭니다.

이 crate에는 delimiter 기반 Figment 환경 매핑을 사용하지 마세요.

#![allow(unused)]
fn main() {
// Do not use this pattern for rust-config-tree schemas.
Env::prefixed("APP_").split("_")
Env::prefixed("APP_").split("__")
}

split("_")는 underscore를 중첩 키 구분자로 처리합니다. 그러면 APP_DATABASE_POOL_SIZEdatabase.pool.size 같은 경로가 되어 pool_size 같은 Rust 필드 이름과 충돌합니다.

ConfiqueEnvProvider를 사용하면 이 매핑은 명시적입니다.

APP_DATABASE_POOL_SIZE -> database.pool_size

단일 underscore는 환경 변수 이름의 일부로 남습니다. Figment는 중첩 규칙을 추측하지 않습니다.

Dotenv 로딩

런타임 프로바이더가 평가되기 전에 로더는 루트 설정 파일의 디렉터리에서 위로 올라가며 .env 파일을 찾습니다.

기존 프로세스 환경 변수는 보존됩니다. .env의 값은 빠진 환경 변수만 채웁니다.

예:

APP_SERVER_PORT=9000
APP_DATABASE_POOL_SIZE=64

스키마가 대응하는 #[config(env = "...")] 속성을 선언하면 이 변수들은 설정 파일 값을 override합니다.

값 파싱

브리지 프로바이더는 Figment가 환경 값을 파싱하게 합니다. confiqueparse_env hook은 호출하지 않습니다. Figment 환경 값 문법이 타입에 잘 맞지 않는 복잡한 값은 설정 파일에 두세요.