2

我正在使用 Sinatra 开发 Twilio 应用程序。由于我对 Ruby 没有太多经验(但我很兴奋地学习),因此我在将凭据与文件分开时遇到了问题。我想将文件上传到存储库,但我想将敏感凭据保存在要导入的单独文件中。

该文件目前包括:

require 'rubygems'
require 'twilio-ruby'

account_sid = "xxxxxx"
auth_token = "xxxxx"
client = Twilio::REST::Client.new account_sid, auth_token

from = "+12341231234"

friends = {
  "+1231231234" => "Lenny"
}
friends.each do |key, value|
  client.account.sms.messages.create(
    :from => from,
    :to => key,
    :body => "Hey #{value}, Monkey party at 6PM. Bring Bananas!"
  )
  puts "Sent message to.#{value}"
end

我将如何正确地将account_sidauth_token行加载到单独的文件中?像这样存储凭据的最佳做法是什么?

4

1 回答 1

6

两种常见的做法是:

1)将变量存储为系统上的环境变量并使用ENV

account_sid = ENV["TWILIO_ACCOUNT_SID"]
auth_token = ENV["TWILIO_AUTH_TOKEN"]
client = Twilio::REST::Client.new account_sid, auth_token

2) 另一种是将它们存储在服务器上的 YAML 文件中,然后在部署应用程序时,将此文件符号链接到它应该在存储库中的位置。这个文件应该在你的.gitgnore

#config.yml

twilio:
  account_sid: "xxxxx"
  auth_token: "xxxxx"

然后在您的应用程序中

require 'yaml'
config = YAML.load_file("config.yml")
account_sid = config[:twilio][:account_sid]
auth_token = config[:twilio][:auth_token]

还有几个配置管理的 gem,我个人使用的唯一一个是figaro,但它是特定于 rails 的。

于 2013-09-07T19:44:56.843 回答