使用foreman时处理开发env变量

时间:2015-01-14 22:11:10

标签: ruby-on-rails ruby-on-rails-4 configuration foreman env

使用foreman gem时,我包含一个.env文件来为我的开发环境指定不同的环境变量。

但是,在项目上与其他开发人员协作时,有什么方法可以让我们的.env文件保持同步,而无需检查来自Twilio和Pusher等服务的凭据到源代码管理中?

目前,我在根目录中保留了一个更新的README.md,它指定了我们需要的密钥,但是每次拉动时都需要查看自述文件,这是额外的工作。

2 个答案:

答案 0 :(得分:0)

我们(我没有提出这个问题,但我的团队现在已经使用了一段时间)在我们运行的工作目录中有一个env子目录。在env中,有DATABASE_URIMY_ENV_KEY等文件或您需要的任何其他文件,其值是环境变量应设置的值。

然后我们有一个名为start_server.sh的脚本,我们从Foreman的procfile中调用:

#!/bin/bash

for env_file in `pwd`/env/*;
do
    name_of_var=`basename $env_file`
    get_val_of_var_cmd='echo "$'$name_of_var'"'
    val_of_var=`eval "$get_val_of_var_cmd"`

    if [[ "$val_of_var" == "" ]];
    then
    val_of_var=`cat $env_file`
    cmd="export $name_of_var='$val_of_var'"
    echo "Setting $name_of_var=$val_of_var"
    eval $cmd
    else
    echo "Using   $name_of_var=$val_of_var"
    fi
done

exec bundle exec unicorn $*

env目录及其中的文件可以添加到源代码管理中。

答案 1 :(得分:0)

自从提出这个问题以来,我发现John Resig的这篇文章是关于他从同事Craig Silverstein那里得到的一个提示。

http://ejohn.org/blog/keeping-passwords-in-source-control/

不是将密钥加密到源代码控制中,而是选择创建包含空值的虚拟密钥文件的原始解决方案,并将实际密钥存储在安全但可由我的协作者访问的地方。