我有一个 URL,该 URL 会根据我处于开发阶段还是产品阶段而变化
在开发中,应该是
http:localhost:3000
在产品中,它应该是https://www.foobar.com
conn
|> redirect(external: "http://localhost:3000")
如果您知道这是一个编译时变量,您可以在
config/dev.exs
、config/test.exs
和 config/prod.exs
中设置它(或者在 config/config.exs` 中设置它,并在环境不同时覆盖它) .
如果您需要它在运行时可配置(即在使用
mix release
构建版本后可以更改的内容),您可以使用 runtime.exs
来代替。
我相信默认情况下会为您生成一个示例:
config :my_app, MyAppWeb.Endpoint,
url: [host: "localhost"],
这种类型的嵌套配置可以通过以下方式访问:
Application.get_env(:my_app, MyAppWeb.Endpoint, :url) |> Keyword.get(url)
# returns [host: "localhost"]
你也可以这样做:
config :my_app, :external_support_site, "https://support.example.com"
在runtime.exs中,如果您确实想使用环境变量作为URL的来源,您可以使用
System.get_env("EXTERNAL_SUPPORT_SITE")
作为您分配给的值
config :my_app, :external_support_site, System.get_env("EXTERNAL_SUPPORT_SITE")
您可以在示例中访问它,如下所示:
conn
|> redirect(external: Application.get_env(:my_app, :external_support_site, "https://some-default.example.com)