Phoenix - 将模块导入config

时间:2017-06-13 00:00:52

标签: elixir phoenix-framework

对于我的Phoenix应用程序的本地开发版本,我想将gitignore/目录中的一些密钥数据导入config.exs。但是,有两件事我不确定:

  1. 我要导入的数据只是字符串数据 - API密钥,密钥 - 我是否需要定义模块,还是有更简单的方法来导出字符串数据?

  2. config.exs中使用的适当的import语句是什么,给定以下文件结构:

    MyApp/
      |
      - config/
      |    |
      |    - config.exs
      |
      - gitignore/
           |
           - api_key.exs
           - api_secret.exs
    
  3. 我熟悉如何在Node中完成此操作,但我不确定如何在凤凰城处理此事。

    为了说明我想要实现的目标,我的一个Node应用程序的示例如下:

    index.js

    const APISecret = process.env.API_SECRET || require('./gitignore/api_secret.js')
    const APIKey = process.env.API_KEY || require('./gitignore/api_key.js')
    

    所需文件的位置

    module.exports = 'RANDOM_KEY_HERE'
    

    如何格式化要忽略的数据,以及在config.exs中访问该数据的适当方式是什么?

2 个答案:

答案 0 :(得分:1)

我建议使用.env文件作为项目的根目录,在其中放置所有dev环境变量(将其添加到.gitignore)。它看起来像这样:

export API_KEY=some_api_key
export API_SECRET=some_api_secret

然后,在config/config.exs中,导出这些变量:

config :secret_things,
  api_key: System.get_env("API_KEY"),
  api_secret: System.get_env("API_SECRET")

很酷的是,Phoenix会自动识别.env文件,这样System.get_env/1调用就可以在不再配置的情况下运行。

然后,您可以使用Application.get_env(:secret_things, :api_key)在您的应用中访问这些配置变量。

重要提示:在当前终端选项卡中启动服务器或IEx时,请不要忘记source .env。您无需在新标签中提取它。

答案 1 :(得分:0)

回答了我自己的问题......

我添加了dev.secret.exs文件,如下所示:

use Mix.Config

config :secret_things, 
  api_key: "NUMBERS",
  secret: "STUFF"

然后使用

将其导入dev.exs
import_config "dev.secret.exs"

并在dev.secret.exs中加入了.gitignore。完成。