檢視原始碼 Config.Reader (Elixir v1.16.2)
用 Config
定義的設定檔讀取 API。
作為提供者
Config.Reader
也可用作 Config.Provider
。設定提供者用於發行版,以自訂應用程式的設定方式。當用作提供者時,它會預期一個引數:設定路徑(如 Config.Provider.config_path/0
中所述),用於在系統開機期間讀取和載入檔案。
例如,如果您預期目標系統在絕對路徑中有一個設定檔,您可以在 mix.exs
的 def project
部分中新增此內容
releases: [
demo: [
config_providers: [
{Config.Reader, "/etc/config.exs"}
]
]
]
或者,如果您想在發行版中讀取自訂路徑
config_providers: [{Config.Reader, {:system, "RELEASE_ROOT", "/config.exs"}}]
您也可以傳遞一個關鍵字選項清單給讀取器,其中 :path
是必要的金鑰
config_providers: [
{Config.Reader,
path: "/etc/config.exs",
env: :prod,
imports: :disabled}
]
請記住,Mix 預設會載入 config/runtime.exs
。如需更多範例和場景,請參閱 Config.Provider
模組。
摘要
函式
評估給定 file
的設定 contents
。
接受與 read!/2
相同的選項。
合併兩個設定。
設定會合併在一起,在發生衝突時,第二個設定的值優先於第一個設定。如果兩個值都設定為關鍵字清單,它會深入合併它們。
範例
iex> Config.Reader.merge([app: [k: :v1]], [app: [k: :v2]])
[app: [k: :v2]]
iex> Config.Reader.merge([app: [k: [v1: 1, v2: 2]]], [app: [k: [v2: :a, v3: :b]]])
[app: [k: [v1: 1, v2: :a, v3: :b]]]
iex> Config.Reader.merge([app1: []], [app2: []])
[app1: [], app2: []]
讀取設定檔。
選項
:imports
- 已匯入路徑清單或:disabled
以停用匯入:env
- 設定檔執行的環境。請參閱Config.config_env/0
以取得範例用法:target
- 設定檔執行的目標。請參閱Config.config_target/0
以取得範例用法
讀取給定的設定檔並傳回其匯入的設定。
接受與 read!/2
相同的選項。不過請注意,:imports
選項無法在 read_imports!/2
中停用。