在凤凰应用程序中设置和加载环境变量

use*_*039 7 elixir phoenix-framework

我是 Phoenix 框架的新手,正在寻找一种在应用程序中设置环境变量的方法。我找到的一种方法是here

但是,我不喜欢这种方式,因为source .env每当我重新启动应用程序时都需要输入。

我尝试如下设置 ENV 变量prod.secret.exs

config :oauth,
  GITHUB_CLIENT_ID: "(CLIENT ID)",
  GITHUB_CLIENT_SECRET: "(SECRET)"
Run Code Online (Sandbox Code Playgroud)

我尝试通过以下方式检索 ENV 变量:

 config :ueberauth, Ueberauth.Strategy.Github.OAuth,
   client_id: System.get_env("GITHUB_CLIENT_ID"),
   client_secret: System.get_env("GITHUB_CLIENT_SECRET")
Run Code Online (Sandbox Code Playgroud)

但是,当我使用 运行服务器时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.
Run Code Online (Sandbox Code Playgroud)

我正在寻找一种方法将项目本身中的 ENV 变量保存在一个隐藏文件中,以便我可以随时检索它。有人能告诉我保存 ENV 变量并在 Phoenix 应用程序中检索它们的正确方法是什么吗?

Dar*_*zer 9

我找到了另一个例子

1.-.env在您的主文件夹中创建一个文件

2.- 在.env文件中添加环境变量

# Example:
# MyApp/.env file
export GITHUB_CLIENT_ID="testID"
export GITHUB_SECRET_CLIENT_ID="testSecretID"
Run Code Online (Sandbox Code Playgroud)

3.- 运行source .env,每次修改后,再次执行命令,也可能在重启

4.- 真正重要的是- 不要忘记将您的秘密文件添加到MyApp/.gitignore

# add this at the end
/.env
Run Code Online (Sandbox Code Playgroud)

5.- 运行凤凰服务器mix phx.servermix phoenix.server

你可以用

iex -S mix phoenix.server

iex> System.get_env("GITHUB_CLIENT_ID")
"testID"
Run Code Online (Sandbox Code Playgroud)

帮助链接:

环境变量错误
配置文档