代码之家  ›  专栏  ›  技术社区  ›  Ojrojako

获取配置的节,但没有与之关联的模块

  •  1
  • Ojrojako  · 技术社区  · 8 年前

    我可以获取以下配置:

      config :my_app, MyApp.Endpoint,
        url: [host: "localhost"],
        secret_key_base: "fdsfdsfd",
        # ..............
    

    这边

    cfg = Application.get_env(:my_app, MyApp.Endpoint)
    

    如何获取此配置部分:

      config :my_app,
        a: 123,
        b: 456
        # ..............
    

    因为没有这样的功能:

    cfg = Application.get_env(:my_app) # no such function
    
    1 回复  |  直到 8 年前
        1
  •  2
  •   Dogbert    8 年前

    您可以使用 Application.get_all_env/1 。具有

    config :my_app,
      a: 123,
      b: 456
    

    我得到的输出是:

    iex(1)> Application.get_all_env(:my_app)
    [b: 456, a: 123]
    

    编辑:如果要忽略键为Elixir模块名称的所有配置,可以执行以下操作:

    Application.get_all_env(:my_app)
    |> Enum.reject(fn {key, value} ->
      is_atom(key) && Atom.to_string(key) |> String.starts_with?("Elixir.")
    end)
    |> IO.inspect