Phoenix:如何设置环境变量?

问题描述 投票:0回答:1

我有一个 URL,该 URL 会根据我处于开发阶段还是产品阶段而变化

在开发中,应该是

http:localhost:3000
在产品中,它应该是
https://www.foobar.com

  1. 我在哪里设置这个环境变量的值?
  2. 我需要如何更新控制器中的此代码片段才能使用此环境变量?
    conn
      |> redirect(external: "http://localhost:3000")

elixir phoenix-framework
1个回答
0
投票

如果您知道这是一个编译时变量,您可以在

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)
© www.soinside.com 2019 - 2024. All rights reserved.