elixir - 在 Phoenix 应用程序中设置和加载环境变量

标签 elixir phoenix-framework

我是 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 应用程序中检索它们的正确方法是什么吗?

最佳答案

我找到了另一个例子

1.- 创建文件 .env在你的主文件夹中

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

# Example:
# MyApp/.env file
export GITHUB_CLIENT_ID="testID"
export GITHUB_SECRET_CLIENT_ID="testSecretID"

3.-运行source .env每次修改后,再次执行命令,也许在重启时也是如此

4.- 什么是真正的重要 - 不要忘记将您的 secret 文件添加到 MyApp/.gitignore
# add this at the end
/.env

5.-运行 Phoenix 服务器mix phx.servermix phoenix.server
你可以用 测试它
iex -S mix phoenix.server

iex> System.get_env("GITHUB_CLIENT_ID")
"testID"

帮助链接:

Environment variable error
Documentation of config

关于elixir - 在 Phoenix 应用程序中设置和加载环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44949561/

相关文章:

elixir - Ecto迁移中如何动态更新字段值?

创建新的 Phoenix 项目时,用户 'root' @'localhost' 的 MySQL 访问被拒绝

forms - 如何在 Phoenix 中生成 Geo 自定义类型的表单

elixir - 如何测试 Elixir GenStage Consumer?

elixir - 将 cons 运算符 "|"与关键字列表一起使用

monitoring - Phoenix 应用程序中的错误监控

phoenix-framework - 在Phoenix框架中将javascript文件放在何处

build - 更改 Mix 使用的 _build dir 的位置

elixir - Phoenix Framework 1.4 版本中的 models 文件夹在哪里?

phoenix-framework - Phoenix : Running mix ecto. 创建错误编译牧场依赖