【发布时间】:2017-12-10 11:59:29
【问题描述】:
我是 Phoenix 框架的新手,正在寻找一种在应用程序中设置环境变量的方法。我找到的一种方法是here。
但是,我不喜欢这种方式,因为每次重新启动应用程序时我都需要输入 source .env。
我尝试在prod.secret.exs 中设置 ENV 变量,如下所示:
config :oauth,
GITHUB_CLIENT_ID: "(CLIENT ID)",
GITHUB_CLIENT_SECRET: "(SECRET)"
我尝试通过以下方式检索 ENV 变量:
config :ueberauth, Ueberauth.Strategy.Github.OAuth,
client_id: System.get_env("GITHUB_CLIENT_ID"),
client_secret: System.get_env("GITHUB_CLIENT_SECRET")
但是,当我使用 mix phoenix.server 运行服务器时,它给了我一个如下所示的错误,我不确定它的真正含义:
You have configured application :oauth in your configuration
file, but the application is not available.
This usually means one of:
1. You have not added the application as a dependency in a mix.exs file.
2. You are configuring an application that does not really exist.
Please ensure :oauth exists or remove the configuration.
我正在寻找一种将项目本身中的 ENV 变量保存在隐藏文件中的方法,以便可以随时检索它。谁能告诉我保存 ENV 变量并在 Phoenix 应用程序中检索它们的正确方法是什么?
【问题讨论】:
-
config :oauth, GITHUB_CLIENT_ID: "(CLIENT ID)"将不会设置 ENV 变量。也许你想要github.com/avdi/dotenv_elixir。 -
@Dogbert,我读过它,但我不觉得这不是设置 ENV 变量的 Elixir 方法。我在寻找更多的本地(?)方式。
-
您是否将其作为 linux 服务(如 upstart 或 sytemd)的一部分运行?因为如果你是为什么要关心如何将秘密值带入你的应用程序。只需选择一个解决方案并继续编码。