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

environment variable name は schema 内で 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 からこれらの名前を読み取り、 各 environment variable を正確な field path へ mapping する Figment provider を構築します。

この crate の schema では delimiter-based Figment environment mapping を使いません。

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

split("_") は underscore を nested key separator として扱います。そのため APP_DATABASE_POOL_SIZEdatabase.pool.size のような path になり、 pool_size のような Rust field name と衝突します。

ConfiqueEnvProvider では mapping は明示的です。

APP_DATABASE_POOL_SIZE -> database.pool_size

single underscore は environment variable name の一部として残ります。Figment は nesting rule を推測しません。

Dotenv Loading

runtime provider を評価する前に、loader は root config file の directory から 上方向に .env file を探します。

既存の process environment variables は保持されます。.env の値は missing environment variable だけを埋めます。

例:

APP_SERVER_PORT=9000
APP_DATABASE_POOL_SIZE=64

schema が matching #[config(env = "...")] attribute を宣言している場合、 これらの variable は config file value を上書きします。

Parsing Values

bridge provider は Figment に environment value を parse させます。 confiqueparse_env hook は呼びません。complex value は、Figment の environment value syntax が型に十分合う場合を除き、config file に置いてください。