Dav*_*itz 12 ruby git json ruby-on-rails heroku
我正在构建一个rails应用程序,使用Google Api Client Library for Ruby从Google Analytics中提取数据.
我正在使用OAuth2,可以在本地计算机上进行开发.我的问题是该库使用下载的文件client_secrets.json来存储两个密钥.
问题:我正在使用Heroku,需要一种方法将文件送到他们的生产服务器.
由于项目是公开的,我不想将此文件添加到我的github仓库.
如果有办法暂时将文件添加到git,请推送到Heroku,然后从git中删除就可以了.我的感觉是密钥将在提交中,并且很难阻止在github上显示.
尝试: 到目前为止,我可以告诉你不能通过Bash控制台向Heroku发送文件.我相信当你这样做时你会得到一个新的Dyno,你添加的任何东西都只是暂时的.我试过这个但是无法使SCP正常工作,所以不是百分之百确定这一点.
尝试: 我查看了将JSON文件存储在Environment或Config Var中,但无法使其工作.如果有人有想法,这似乎是最好的方式.当ruby将JSON转换为字符串或哈希时,我经常遇到麻烦,所以我可能只需要指导.
尝试:
另外,我试图找出一种方法,从JSON文件中提取密钥,将它们放入Config Vars,并将JSON文件添加到git.我不知道如何放入ENV["KEY"]JSON文件.
示例代码 的谷歌图书馆有一个方法加载JSON文件创建一个授权客户.然后客户端获取令牌(或提供授权URL).
client_secrets = Google::APIClient::ClientSecrets.load('client_secrets.json')
auth_client = client_secrets.to_authorization
Run Code Online (Sandbox Code Playgroud)
**请注意,Google页面上的示例未显示文件名,因为它使用已设置为路径的默认ENV Var
我认为如果ClientSecrets.load()方法只是采用JSON,一个字符串或一个可以进入Config Var的哈希,这将会更加容易.
不幸的是,似乎总是想要一个文件路径.当我向它提供JSON,字符串或哈希时,它会爆炸.我看到有人在这里用p12键解决了这个问题,但我不确定如何在我的情况下复制它.
没有试过: 我唯一的另一个(除了转移到AWS)是将JSON文件放在AWS上并在需要时让它拉出来.我不确定这是否可以动态完成,或者当rails服务器启动时是否需要将文件拉下来.看起来工作太多,但此时我花了几个小时才准备尝试.
这是我正在使用的特定控制器:https: //github.com/dladowitz/slapafy/blob/master/app/controllers/welcome_controller.rb
Dav*_*itz 10
通过搜索github我发现有人使用了一种不同的方法,它使用JSON字符串作为参数而不是文件路径: Google::APIClient::ClientSecrets.new(JSON.parse(ENV['GOOGLE_CLIENT_SECRETS']))
这让我将JSON包装成ENV VAR.世界再次有意义.