我从你的问题中得到了启示,使用了ENV。
我有三个不同的秘密值,我不想让它们公开。当然,它们是应用程序的秘密令牌和Twitter的消费者密钥和秘密。在我的秘密令牌初始化器中:
KinTwit::Application.config.secret_token = ENV['SECRET_TOKEN']
Twitter.consumer_key = ENV['CONSUMER_KEY']
Twitter.consumer_secret = ENV['CONSUMER_SECRET']
我将我的项目托管在Heroku上,因此我将它们作为配置变量添加到了Heroku。
[03:07:48] [william@enterprise ~/dev/rwc/kintwit]$ heroku config:add CONSUMER_KEY=ub3rs3cr3tk3y
Adding config vars and restarting app... done, v7
CONSUMER_KEY => ub3rs3cr3tk3y
[03:08:40] [william@enterprise ~/dev/rwc/kintwit]$ heroku config:add CONSUMER_SECRET=ub3rs3cr3tk3y
Adding config vars and restarting app... done, v8
CONSUMER_SECRET => ub3rs3cr3tk3y
[03:08:57] [william@enterprise ~/dev/rwc/kintwit]$ heroku config:add SECRET_TOKEN=ub3rs3cr3tk3y
Adding config vars and restarting app... done, v9
SECRET_TOKEN => ub3rs3cr3tk3y
现在,这些值已经准备好在我下一次推送时使用。但是,如果您没有使用Heroku呢?显然,我并不是每个单独的rails部署专家(天哪,甚至不是Heroku专家),但一个例子是为测试执行db:migrate。
$ RAILS_ENV=test rake db:migrate
在命令之前的KEY=value对设置了环境变量,因此运行此命令:
echo ENV['RAILS_ENV']
会打印
test
。所以无论你的环境如何设置,你都可以这样做。但是,环境变量不在你的代码中,这就是诀窍。