Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 我应该把GoogleAPI.json密钥文件放在哪里?_Ruby On Rails_Heroku_Google Api - Fatal编程技术网

Ruby on rails 我应该把GoogleAPI.json密钥文件放在哪里?

Ruby on rails 我应该把GoogleAPI.json密钥文件放在哪里?,ruby-on-rails,heroku,google-api,Ruby On Rails,Heroku,Google Api,我正在尝试将谷歌日历API集成到我的Rails应用程序中,这样我就可以从我的应用程序中创建谷歌日历事件 谷歌提供了一个client_secret.json文件。我可以在本地使用它,但现在不知道如何在heroku上实现密钥文件 有人能帮我吗?它应该是一个秘密和密钥(名称和值) 对于heroku,可以将它们设置为环境变量。像这样: heroku config:set GOOGLE_SECRET=8N029N81ASLDKFA823_WO4ANF (但请使用json文件中提供的信息) 现在。下一步是

我正在尝试将谷歌日历API集成到我的Rails应用程序中,这样我就可以从我的应用程序中创建谷歌日历事件

谷歌提供了一个client_secret.json文件。我可以在本地使用它,但现在不知道如何在heroku上实现密钥文件


有人能帮我吗?

它应该是一个秘密和密钥(名称和值)

对于heroku,可以将它们设置为环境变量。像这样:

heroku config:set GOOGLE_SECRET=8N029N81ASLDKFA823_WO4ANF
(但请使用json文件中提供的信息)

现在。下一步是确保应用程序只以单一方式调用这些键。一个选项是使用config/secrets.yml文件。调用机密文件中的环境变量。然后,您可以在开发中使用dotenv gem,以便在应用程序的根目录中放置所有的env变量(但不要签入.env文件)

如果文件不存在,请创建一个文件
config/secrets.yml
,并在其中添加:

 production:
   google_secret: ENV['GOOGLE_SECRET']

 development:
   google_secret: ENV['GOOGLE_SECRET']
(显然,再次确认名称是您选择的名称)

接下来将dotenv添加到gem文件并运行bundle

gem 'dotenv-rails', :groups => [:development, :test]
在应用程序的根目录中创建一个名为.env的新文件。并直接添加变量,包括键名和值

GOOGLE_SECRET=8N029N81ASLDKFA823_WO4ANF
您可以根据需要添加任意多个环境变量

现在编辑.gitignore文件并将.env文件添加到其中,以确保不会意外检入您的私人信息

最后,在任何需要使用环境变量的地方,都可以从如下秘密调用它:

Rails.application.secrets.google_secret

我知道这似乎需要很多步骤,但它可以确保开发人员与产品相匹配,而无需在代码中使用大量的
if Rails.env.development?
语句。

我确实尝试过这样做。我从json文件中设置了密码和id,但这不起作用。Google客户端正在查找文件本身。Google的API客户端gem aaaaaaah--我明白了。方钉,圆孔:)文档是用于纯ruby设置的。它仍然在rails设置中使用相同的信息,但是不使用该文档中提供的rb脚本,而是使用OAUTH方法。您仍然可以使用上面的步骤,只需告诉脚本在何处以及如何使用其中的信息。另外,请注意,因为您使用的是heroku,并且它是一个短暂的文件系统,所以google教程中的脚本尝试写入FS,这在heroku.Right上是不可能的。为了让这个剧本发挥作用,我一直在让自己发疯。我已经在heroku&secrets.yml中设置了环境变量。好的,我已经设置了客户id、密码和日历id。我将不得不坐下来思考如何编写一个新的脚本来使用它们。如果它是一个用户日历(来自他们的google帐户),你可以使用omniauth连接到他们的日历,一旦你有了这个秘密,你就可以按照这个教程:---如果你不使用基于使用的日历,这对你没有帮助