我正在构建一个 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/