Elixir Cookbook: 管理应用程序配置

管理应用程序配置

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)>
Table of Contents 第⼀部分:基础 Introduction 基础集合Enum 模块 模式匹配 控制语句 函数管道操作符 模块(Module) Mix 魔符(Sigil) ⽂档模块 测试推导字符串 ⽇期和时间 ⾃定义Mix任务 IEx辅助函数 第⼆部分:⾼级 1 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 2.10 2.11 2.12 2.13 2.14 3.1 3.2 3.3 3.4 4.1 4.2 4.3 和Erlang互操作 错误处理 可执⾏⽂件 并发OTP并发 OTP Supervisors OTP 分布式 元编程 Umbrella Projects Specifications and types ⾏为GenStage 协议Nerves 第三部分:ECTO Basics Changesets 关联关系 查询第四部分:专题 Plug 嵌⼊的 Elixir(EEx) Erlang 项式存储(ETS) 2 4.4 4.5 5.1 5.2 5.3 5.4 5.5 5.6 Mnesia 数据库 调试第五部分:程序库 Guardian(基础) Poolboy Benchee Bypass Distillery(基础) StreamData 3 Introduction 绪⾔第⼀部分:基础 基础集合Enum 模块 模式匹配 控制语句 函数管道操作符 模块(Module) Mix 魔符(Sigil) ⽂档模块 测试推导字符串 ⽇期和时间 ⾃定义Mix任务 IEx辅助函数 第⼆部分:⾼级 和Erlang互操作 错误处理 可执⾏⽂件 并发OTP并发 OTP Supervisors 4 Introduction OTP 分布式 元编程 Umbrella Projects Specifications and types ⾏为GenStage 协议Nerves 第三部分:ECTO Basics Changesets 关联关系 查询 第四部分:专题 Plug 嵌⼊的 Elixir(EEx) Erlang 项式存储(ETS) Mnesia 数据库 调试 第五部分:程序库 Guardian(基础) Poolboy Benchee Bypass Distillery(基础) StreamData
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值