在elixir的config中我们有时会使用的到一些不想暴露出来的配置项,常用的作法是如Phoenix

#config/prod.exs
use Mix.Config
...
# Finally import the config/prod.secret.exs
# which should be versioned separately.
import_config "prod.secret.exs"

在上面,我们可以把不应该暴露的项(如数据库passwd,auth_token...这些很重要的项)都写在prod.secret.exs(链接可见例子)中

我们再把prod.secret.exs这个文件不要加到项目的版本管理中, 单独开一个git仓库管理。

但是有时我们并不想再这样,还有一种方法(而且感觉比上面这种方法更好用)

就是把所有的应该写在prod.sesret.exs的项都写到系统的环境变量中。

#config/prod.exs
use Mix.Config ....
config :application_name, ApplicationName.Repo,
adapter: Ecto.Adapters.MySQL,
username: System.get_env("PROD_REPO_USERNAME"),
password: System.get_env("PROD_REPO_PASSWORD"),
database: System.get_env("PROD_REPO_DATABASE"),
hostname: System.get_env("PROD_REPO_HOSTNAME")
...

这时只需要在服务器上

#prod.env
export PROD_REPO_USERNAME='username'
export PROD_REPO_PASSWORD='loveyou'
export PROD_REPO_DATABASE='database'
export PROD_REPO_HOSTNAME='11.11.11.11'

只需要先

>source prod.env
>iex -S mix

这样就可以通过环境变量来管理elixir的配置啦。


What benchmarks done on my developer machine look like to all my friends

[Elixir004]通过环境变量(Environment Variables)来管理config的更多相关文章

  1. postman 用环境变量Environment实现多服务器版本

    现存问题 在测试API期间,往往存在多种环境,对应IP地址(或域名也不同) 比如: Prod: http://116.62.25.57/ucows 用于开发完成发布到生产环境 Dev: http:// ...

  2. ABAP Netweaver和Cloud Foundry上的环境变量Environment Variable

    Netweaver 更准确的说应该是系统变量:结构体sy 设一个断点,调试器里看这些字段的值就能知道每个字段是用来做什么的. sy-dbsys sy-sysid sy-opsys sy-saprl s ...

  3. 下载安装JDK,配置环境变量

    Hello,JDK; 在开始学习JAVA之前,第一件事情肯定是被告知:先下载JDK.就像我的一个朋友问我的一样"JDK是个什么鬼?我学的不是JAVA么,为什么要下载JDK?". J ...

  4. NodeJS学习:环境变量

    简介 环境变量(environment variables) 不属于 NodeJS 范畴,它是操作系统用于设定执行环境的参数.会在程序运行时传递给应用程序. NodeJS 获取环境变量,是通过 glo ...

  5. JDK8安装包的下载安装方式以及环境变量的配置

    前面我们介绍了 <Java是什么?>.<OracleJDK是什么?OracleJDK的版本怎么选择?>.<OpenJDK是什么?>以及<OracleJDK 与 ...

  6. [十六]SpringBoot 之 读取环境变量和绑定属性对象

    1.读取环境变量 凡是被spring管理的类,实现接口EnvironmentAware 重写方法 setEnvironment 可以在工程启动时,获取到系统环境变量和application配置文件中的 ...

  7. CentOS中环境变量和配置文件

    什么是环境变量 bash shell用一个叫做 环境变量(environment variable) 的特性来存储有关shell会话和工作环境的信息.即允许在内存中存储数据,使得在程序或shell中运 ...

  8. 【转】Linux将composer的bin目录放到PATH环境变量中

    将composer的bin目录放到PATH环境变量中 使用composer global config bin-dir --absolute查看composer的bin目录 输出类似 Changed ...

  9. Linux environment variables (环境变量)

    Environment variables are often used to store a list of paths of where to search for executables, li ...

随机推荐

  1. Oracle 和 MySQL的区别(不完整)

    1. Oracle对单双引号要求的很死,一般不准用双引号,不然会报错.MySQL 单双引号都可以. 2. 事务提交方式:Oracle 默认手动提交,MySQL 默认自动提交. 3. 分页:MySQL有 ...

  2. linux版飞信安装

    下载安装包; http://www.it-adv.net/fetion/libraryrh4x32.tar.gz  [支持库] http://www.it-adv.net/fetion/downloa ...

  3. php时间轴函数,很不错,记下了

    function TranTime($time) { //$time = strtotime($time); $nowTime = time (); $message = ''; if(empty($ ...

  4. Android中的WebView进行直接加载网页(要注意解决权限问题)

    我们都知道Android的网络功能很不错,当然Android中WebView组件也挺不错,可以直接进行加载网页,我们可以把这个看做一个小型的浏览器\ [注]以下的一些内容我翻译了一下文档,可能有些翻译 ...

  5. 问题记录,StartCoroutine(“str")问题

    StartCoroutine参数为函数字符串名,运行时出错,错误是:无法启动协程函数. 调用格式如下: gameManager.StartCoroutine(LuaOnLevelwasloaded() ...

  6. 使用通配符配置action

    建立struts2wildcard项目,此实例基本仿照前面前面第7点的实例改写而成.为了使用通配符,只需要改写配置文件即可.此实例未使用通配时的配置文件如下: <action name=&quo ...

  7. JavaScript中call,apply,bind方法

    why?call,apply,bind干什么的?为什么要学这个? 一般用来指定this的环境,在没有学之前,通常会有这些问题. var a = { user:"追梦子", fn:f ...

  8. Redis RDB文件

    [Redis RDB文件] 1.RDB 持久化可以在指定的时间间隔内生成数据集的时间点快照(point-in-time snapshot). RDB 的优点 RDB 是一个非常紧凑(compact)的 ...

  9. python's try&except&else

    [python's try&except&else] python的try&catch有个好用的东西,else,即try&except&else可以共用,els ...

  10. acer笔记本禁用或关闭触摸板

    acer笔记本禁用或关闭触摸板 如果启用或停用AspireOne的触摸板? 如果您希望启用或停用触摸板,请同时按下功能键(Fn)key和F7键.屏幕上会显示触摸板是否已启用或已禁用.