在Heroku中为Phoenix Framework设置MIX_ENV

时间:2017-09-05 01:37:49

标签: heroku elixir phoenix-framework mix

我成功实例化了两个Heroku应用程序:my-app-prod和my-app-test。我在Heroku应用程序设置中配置了特定的环境变量。我在Phoenix使用标准配置文件:config.exs,test.exs,prod.exs,dev.exs。

在Heroku中使用app变量MIX_ENV = test配置my-app-test后,它仍然从prod.exs加载变量。

我是否还缺少其他任何步骤,以便我的应用使用test.exs?

我按照这里的所有说明操作: https://hexdocs.pm/phoenix/heroku.html

当我运行git push时,我可以根据以下输出验证它是否正在使用prod.exs。

remote: Generated my_phoenix_app_name app
remote: -----> Creating .profile.d with env vars
remote: -----> Writing export for multi-buildpack support
remote: -----> Executing post compile: pwd
remote: /tmp/build_f5b9e6e5890fcb58b9689f433c554c6a
remote: -----> Phoenix app detected
remote: 
remote: -----> Loading configuration and environment
remote:        Loading config...
remote:        Detecting assets directory
remote:        * package.json found in custom directory
remote:        Will use phoenix configuration:
remote:        * assets path .
remote:        * mix tasks namespace phoenix
remote:        Will use the following versions:
remote:        * Node 5.3.0
remote:        Will export the following config vars:
remote: CLIENT_ID
remote: DATABASE_URL
remote: POOL_SIZE
remote: SECRET_KEY_BASE
remote: SHOPIFY_SECRET
remote:        * MIX_ENV=prod

2 个答案:

答案 0 :(得分:1)

Elixir的Buildpack正在将MIX_ENV设置为prod by default,因此您在Procfile中实际上不需要此设置。您可以将其简单地更改为:

web: mix phoenix.server

my-app-prod上,您无需执行任何操作。在my-app-test上,只需将MIX_ENV设置为test即可。您可以使用命令行

heroku config:set MIX_ENV=test --app my-app-test

如果不起作用,请尝试将您的应用重新部署到Heroku。

答案 1 :(得分:0)

Procfile中说明:

web: MIX_ENV=prod mix phoenix.server

您应该可以将其更改为:

web: mix phoenix.server

由于您已在应用的设置配置变量中设置MIX_ENV,因此您应该可以将MIX_ENV部分保留为关闭状态。