如何在Rails项目中将keyfile作为参数传递

时间:2013-11-08 00:55:10

标签: ruby-on-rails ruby google-bigquery google-api-ruby-client

我在我的项目中使用the bigQuery gem。我使用选项client_id,service_email,key,project_id和dataset初始化它。我有来自谷歌的.p12文件,我想传递但是我不确定将文件放在我的Rails项目中 - 我尝试将它放在与我的配置文件相同的目录中并传递相对路径名,但是我收到了无效的密码短语错误。具体来说,line 10在调用load_key时抛出错误:

key = Google::APIClient::PKCS12.load_key(
  opts['key'],
  "notasecret"
)

很明显,它没有正确加载密钥文件。我在Rails资产控制方面很糟糕 - 我应该在哪里放置我的密钥文件以及我应该在我的选项哈希中传递什么路径名?

1 个答案:

答案 0 :(得分:4)

您可以将密钥文件放入config目录,然后执行以下操作:

opts['key'] = Rails.root.join('config','nameofkeyfile.p12').to_s

您不希望密钥位于您的应用程序将向公众提供的位置,因此配置对我来说听起来不错。

您可以在Rails控制台中试验上面的块:

# run `rails c` then
keypath = Rails.root.join('config','nameofkeyfile.p12').to_s
key = Google::APIClient::PKCS12.load_key(keypath, "notasecret")

查看Google::APIClient documentation,我看到load_key已被弃用。他们建议改为使用Google::APIClient::KeyUtils

key = Google::APIClient::KeyUtils.load_from_pkcs12(keyfile, "notasecret")

有关Rails资产管道的快速概述,请参阅here。 (请原谅该网址的“for dummies”部分,它似乎是好的,快速的信息。)