【发布时间】:2018-04-02 06:57:43
【问题描述】:
在我使用酒厂发布的伞式项目中,我有一个db 应用程序config,其中包含以下内容:
config :main, Main.Repo,
adapter: Ecto.Adapters.Postgres,
username: "${DB_USERNAME}",
password: "${DB_PASSWORD}",
database: "${DB_NAME}",
hostname: "${DB_HOST}",
pool_size: 10
由于我在构建中设置了REPLACE_OS_VARS=true,因此正确读取环境变量可以配置数据库。
我在电子邮件app 中有一个类似的设置,它具有以下配置:
config :email, from_email: "${FROM_EMAIL}"
然后我希望从我的email 应用程序中访问它,如下所示:
@from_email Application.get_env(:email, :from_email)
但是@from_email 的值是"${FROM_EMAIL}" 不是我为FROM_EMAIL 设置的环境变量。
我不太熟悉酿酒厂的工作原理,也不确定以这些类似方式传入这些环境变量会如何导致读取方式不同。
非常感谢您了解为什么会发生这种情况。
编辑:
我们可以在 distillery 编译时传递 $FROM_EMAIL 环境变量,但我们希望在运行时传递它。
我们可以在 db 应用程序中执行此操作,但由于某种原因不能在 email 应用程序中执行此操作。
【问题讨论】:
-
感谢您的快速响应,但为什么会想到呢?我已经仔细检查并设置了
FROM_EMAILvar,如果没有将其正确传递给应用程序会是一个问题 -
不要存储在模块属性中,而是尝试在运行时调用
Application.get_env(:email, :from_email)。 -
这就是答案,谢谢@Dogbert。发表一个答案,我会接受它
标签: environment-variables elixir phoenix-framework distillery