gpt4 book ai didi

elixir - 如何从 Phoenix 的环境文件中获取变量值?

转载 作者:行者123 更新时间:2023-12-03 13:28:20 24 4
gpt4 key购买 nike

我正在部署我的第一个 Phoenix 应用程序,并在我的环境文件(dev.exsprod.exs)中指定了一个变量的值。

现在我试图弄清楚如何在我的 Controller 中访问它们。

# config/dev.exs
config :my_app, MyApp.Endpoint,
http: [port: 4000],
debug_errors: true,
cache_static_lookup: false,
my_var: "DEVELOPMENT VALUE"

# config/prod.exs
config :my_app, MyApp.Endpoint,
http: [port: {:system, "PORT"}],
url: [host: "example.com"],
my_var: "PRODUCTION VALUE"

最佳答案

好的,找到了一些东西。 Elixir's Application.get_env/3是要走的路:

get_env(app, key, default \\ nil)



但是这样做的问题是访问器命令在当前情况下变得很长:

# Set value in config/some_env_file.exs
config :my_large_app_name, MyLargeAppName.Endpoint,
http: [port: {:system, "PORT"}],
url: [host: "example.com"],
my_var: "MY ENV VARIABLE"

# Get it back
Application.get_env(:my_large_app_name, MyLargeAppName.Endpoint)[:my_var]

更好的方法将在单独的部分中定义它们:

config :app_vars,
a_string: "Some String",
some_list: [a: 1, b: 2, c: 3],
another_bool: true

并像这样访问它们:

Application.get_env(:app_vars, :a_string)
# => "Some String"

或者您可以获取 list所有键值对:

Application.get_all_env(:app_vars)           
# => [a_string: "Some String", some_list: [a: 1, b: 2, c: 3], another_bool: true]

关于elixir - 如何从 Phoenix 的环境文件中获取变量值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30995743/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com