我正在关注一本凤凰书:
小心点。 ecto.migrate任务将为您迁移数据库 当前的环境。到目前为止,我们一直在运行开发环境。 要更改环境,您需要设置MIX_ENV操作系统 环境变量。
但是我不知道哪个是当前环境,我打印回显MIX_ENV变量并且它是空的,我如何知道我所处的环境和/或从环境变化?
答案 0 :(得分:8)
如果MIX_ENV
环境变量为空,则Mix.env
默认为:dev
:
$ iex -S mix
> Mix.env
# => :dev
如果您将MIX_ENV
设置为其他现有环境(测试或产品,那么Mix.env
将返回它:
$ MIX_ENV=test iex -S mix
> Mix.env
# => :test
无需定义其他配置。
要从配置中获取某些内容,例如Application.get_env/2
:
Application.get_env(:your_app_name, YourAppName)[:adapter]
# => Ecto.Adapters.Postgres
答案 1 :(得分:0)
我在config /(dev | prod).exs中定义了一个sitetype,如下所示,并获得Application.get_env(:app_name, :site_type)
的网站类型。通过这种方式,即使prod env与蒸馏厂一起分发,您也可以获得该类型。
config :app_name, :site_type, :dev
要么
config :app_name, :site_type, :prod