ruby-on-rails - 如何在 Rails 项目中将 key 文件作为参数传递

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

我正在使用 the bigQuery gem在我的项目中。我使用选项 client_id、service_email、key、project_id 和数据集对其进行初始化。我有来自 Google 的 .p12 文件,我想传入但我不确定将该文件放在我的 Rails 项目中的什么位置 - 我尝试将它放在与我的配置文件相同的目录中并传递相对路径名,但是我收到无效密码错误。具体来说,line 10调用 load_key 时抛出错误:

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

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

最佳答案

您可以将 key 文件放入配置目录,然后执行以下操作:

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

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

您可以在 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 Assets 管道的快速概览,请参阅 here . (请原谅该 url 的“for dummies”部分,它似乎是很好的快速信息。)

关于ruby-on-rails - 如何在 Rails 项目中将 key 文件作为参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19849728/

相关文章:

ruby-on-rails - 如何在 Haml 中乘以 Ruby 代码行?

google-bigquery - GoogleBigQuery 另存为表格

json - GsonBigQueryInputFormat将整数保存为字符串

ruby-on-rails - NoMethodError:为 #<URI::Generic:0x000055d4f2e16f00> 调用私有(private)方法 `open'

python - 混合 Web/桌面应用程序 - Ruby on Rails 或 Django on Python?

ruby-on-rails - HAML + Bootstrap div.row 和 div.spanX,每 N 个元素新行

ruby-on-rails - 捆绑更新然后 sprockets 抛出 filenotfound 错误 rails 3.2.3 ruby​​1.9.3p194

ruby - 如何在动态生成的模块中运行 Proc?

google-bigquery - BigQuery 中跨多个数组列的高级 UNNEST

Rails 中的 Mysql 索引行为不当