管理应用程序配置

Mix 任务运行在一个特定的环境之中. 预定义的环境为产品,开发和测试(prod, dev, 和test). 默认环境为 dev. 在本节中, 我们为每个环境的相同配置赋予不同的值. 并基于特定的配置, 在不同的环境中调用相同的函数输出不同的配置值.

要管理一个应用程序的配置, 我们按照下面的步骤:

1.创建一个新的应用

mix new config_example

2.进入生成的应用程序目录, 并打开 config/config.exs.

3.用下面的代码, 替换文件的所有内容.

use Mix.Config

config :config_example,
  message_one: "This is a shared message!"

import_config "#{Mix.env}.exs"

4.在 config 目录下创建三个额外的文件, 如下:

  • config/dev.exs 文件中添加:

    use Mix.Config
    
    config :config_example,
      message_one: "I'm a development environment message!"
    
    import_config "#{Mix.env}.exs"
  • config/prod.exs 文件中添加:

    use Mix.Config
    
    config :config_example,
      message_one: "I'm a production environment message!"
    
    import_config "#{Mix.env}.exs"
  • config/test.exs 文件中添加:

    use Mix.Config
    
    config :config_example,
      message_one: "I'm a test environment message!"
    
    import_config "#{Mix.env}.exs"

5.在 lib/config_example.ex 中定义两个模块熟悉保存 message_onemessage_two 的值, 如下:

@message_one Application.get_env(:config_example, :message_one)
@message_two Application.get_env(:config_example, :message_two)

6.在 lib/config_example.ex 中创建一个show_messages函数, 像这样:

def show_messages do
    IO.puts "Message one is: #{#message_one}"
    IO.puts "Message tow is: #{#message_two}"
end

7.在三个不同的环境中启动应用程序, 并且查看show_messages函数的输出:

开发环境:

> MIX_ENV=dev iex -S mix
iex(1)> ConfigExample.show_messages
Message one is: This is a shared message!
Message tow is: I'm a developement environment message!
:ok
iex(2)>

产品环境:

> MIX_ENV=prod iex -S mix
iex(1)> ConfigExample.show_messages
Message one is: This is a shared message!
Message tow is: I'm a production environment message!
:ok
iex(2)>

测试环境:

> MIX_ENV=test iex -S mix
iex(1)> ConfigExample.show_messages
Message one is: This is a shared message!
Message tow is: I'm a test environment message!
:ok
iex(2)>

developerworks
1.7k 声望266 粉丝