檢視原始碼 Config.Reader (Elixir v1.16.2)

Config 定義的設定檔讀取 API。

作為提供者

Config.Reader 也可用作 Config.Provider。設定提供者用於發行版,以自訂應用程式的設定方式。當用作提供者時,它會預期一個引數:設定路徑(如 Config.Provider.config_path/0 中所述),用於在系統開機期間讀取和載入檔案。

例如,如果您預期目標系統在絕對路徑中有一個設定檔,您可以在 mix.exsdef 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

合併兩個設定。

讀取設定檔。

讀取給定的設定檔並傳回其匯入的設定。

函式

連結至這個函式

eval!(file, contents, opts \\ [])

檢視原始碼 (自 1.11.0 起)
@spec eval!(Path.t(), binary(), keyword()) :: keyword()

評估給定 file 的設定 contents

接受與 read!/2 相同的選項。

連結至這個函式

merge(config1, config2)

檢視原始碼 (自 1.9.0 起)
@spec merge(keyword(), keyword()) :: keyword()

合併兩個設定。

設定會合併在一起,在發生衝突時,第二個設定的值優先於第一個設定。如果兩個值都設定為關鍵字清單,它會深入合併它們。

範例

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: []]
連結至這個函式

read!(file, opts \\ [])

檢視原始碼 (自 1.9.0 起)
@spec read!(
  Path.t(),
  keyword()
) :: keyword()

讀取設定檔。

選項

  • :imports - 已匯入路徑清單或 :disabled 以停用匯入

  • :env - 設定檔執行的環境。請參閱 Config.config_env/0 以取得範例用法

  • :target - 設定檔執行的目標。請參閱 Config.config_target/0 以取得範例用法

連結至這個函式

read_imports!(file, opts \\ [])

檢視原始碼 (自 1.9.0 起)
@spec read_imports!(
  Path.t(),
  keyword()
) :: {keyword(), [Path.t()]}

讀取給定的設定檔並傳回其匯入的設定。

接受與 read!/2 相同的選項。不過請注意,:imports 選項無法在 read_imports!/2 中停用。