实际上,我使用 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
. 因此,无论如何,这是在您的环境中设置的,这就是您将如何做到的。但是,环境变量不在您的代码中,所以这就是诀窍。