ruby-on-rails - 如何将带有 key 的 json 文件上传到 Heroku

标签 ruby-on-rails ruby json git heroku

我正在构建一个 Rails 应用,它使用适用于 Ruby 的 Google Api 客户端库从 Google Analytics 中提取数据。

我正在使用 OAuth2,并且可以在本地机器上进行开发工作。我的问题是该库使用下载的文件 client_secrets.json 来存储两个 key 。

问题:我正在使用 Heroku,需要一种方法将文件发送到他们的生产服务器。

我不想将此文件添加到我的 github 存储库中,因为该项目是公开的。

如果有办法临时将文件添加到 git,推送到 Heroku,然后从 git 中删除,那会很好。我的感觉是 key 将在提交中并且很难阻止在 github 上显示。

尝试过: 据我所知,您不能通过 Bash 控制台将文件 SCP 发送到 Heroku。我相信这样做时你会得到一个新的 Dyno,你添加的任何东西都只是暂时的。我试过了,但无法让 SCP 正常工作,所以不能 100% 确定这一点。

尝试过: 我查看了将 JSON 文件存储在 Environment 或 Config Var 中,但无法让它工作。如果有人有想法,这似乎是最好的方法。当 ruby​​ 将 JSON 转换为字符串或哈希时,我经常遇到麻烦,所以我可能只需要这里的指导。

尝试过: 此外,我试图找出一种方法来从 JSON 文件中提取 key ,将它们放入 Config Vars,然后将 JSON 文件添加到 git。不过,我想不出将 ENV["KEY"] 放入 JSON 文件的方法。


示例代码 Google library has a method加载 JSON 文件以创建授权客户端。客户端然后获取 token (或提供授权 url)。

client_secrets = Google::APIClient::ClientSecrets.load('client_secrets.json')
auth_client = client_secrets.to_authorization

** 请注意,google 页面上的示例未显示文件名,因为它使用已设置为路径的默认 ENV Var

我认为,如果 ClientSecrets.load() 方法只采用 JSON、字符串或散列(可以进入 Config Var),这一切都会容易得多。

不幸的是,它似乎总是需要一个文件路径。当我向它提供 JSON、字符串或哈希值时,它会崩溃。 I've seen someone get around the issue with a p12 key here ,但我不确定如何在我的情况下复制它。

没试过: 我唯一的其他方法(除了迁移到 AWS 之外)是将 JSON 文件放在 AWS 上,并在需要时让 rails pull 它。我不确定这是否可以即时完成,或者是否需要在 Rails 服务器启动时 pull 下文件。似乎工作量太大,但此时我已经花了几个小时准备尝试。

这是我正在处理的特定 Controller : https://github.com/dladowitz/slapafy/blob/master/app/controllers/welcome_controller.rb

最佳答案

通过搜索 github,我发现有人使用了一种不同的方法,使用 JSON 字符串作为参数而不是文件路径:Google::APIClient::ClientSecrets.new(JSON.parse(ENV['GOOGLE_CLIENT_SECRETS ']))

这让我可以将 JSON 包装到一个 ENV VAR 中。世界再次变得有意义。

关于ruby-on-rails - 如何将带有 key 的 json 文件上传到 Heroku,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35144135/

相关文章:

ruby-on-rails - 使用 MongoMapper 继承 : searching the parent class

ruby-on-rails - Rspec Rails - 模拟为 current_user 以测试 Controller

java - 在 Blackberry 中解析 JSON 响应

ruby - 如何在我的 Rspec 请求规范中跳过中间件?

javascript - 多维 json 数组的问题....用 fiddle

javascript - 将 JSON 字符串转换为对象并显示为 HTML 表格

ruby-on-rails - 图像资源文件夹的路由错误

css - 如何在 Rails 应用程序中使用 html_safe 修复样式?

ruby - 如何通过 Ruby 的 pg gem(Rails 之外)连接到 Postgres 数据库

ruby - 如何设置邮件服务器?