首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >雾-谷歌,无法推送到Heroku

雾-谷歌,无法推送到Heroku
EN

Stack Overflow用户
提问于 2016-09-26 16:16:24
回答 1查看 226关注 0票数 0

因此,我正在尝试在我的生产环境中设置上传文件。我目前正在使用CarrierWave和Fog-Google。我在本地存储文件没有问题,因为我不使用Fog进行开发。然而,我目前正在尝试在生产环境中测试文件上传功能,但我甚至无法将我的应用程序推送到Heroku。

这是我在尝试推送到Heroku时收到的错误片段。

代码语言:javascript
复制
[fog][WARNING] Unrecognized arguments: google_storage_secret_access_key_id, google_storage_secret_access_key
rake aborted!
ArgumentError: Invalid keyfile or passphrase

现在,我对设置ENV密钥ids和所有这些都比较陌生。因此,我只会说出我所知道的和我所做的,以确保我所做的一切都是正确的。

因此,由于我目前使用的是Cloud9集成开发环境,所以在我的.bashrc文件中,我有

代码语言:javascript
复制
export GOOGLE_STORAGE_ACCESS_KEY_ID=XXXXX
export GOOGLE_STORAGE_SECRET_ACCESS_KEY=XXXXX
export GOOGLE_STORAGE_BUCKET_NAME=XXXXX

在我的/config/initializers/carrierwave.rb

代码语言:javascript
复制
require 'carrierwave'

CarrierWave.configure do |config|
  config.fog_provider = 'fog/google'                        # required
  config.fog_credentials = {
    provider:                         'Google',
    google_storage_access_key_id:     ENV['GOOGLE_STORAGE_ACCESS_KEY_ID'],
    google_storage_secret_access_key: ENV['GOOGLE_STORAGE_SECRET_ACCESS_KEY']
  }
  config.fog_directory = ENV['GOOGLE_STORAGE_BUCKET_NAME']
end

在我的/config/initializers/fog.rb

代码语言:javascript
复制
GoogleStorage = Fog::Storage.new(
  provider: 'Google',
  google_project: 'XXXX',
  google_client_email: 'XXXXXX',
  google_key_location: Rails.root.join('private','google-cloud-service-key.p12'),
  google_storage_secret_access_key_id: ENV["GOOGLE_STORAGE_SECRET_ACCESS_KEY_ID"],
  google_storage_secret_access_key: ENV["GOOGLE_STORAGE_SECRET_ACCESS_KEY"]
)

正如前面提到的,我实际上是个新手,所以我已经尽力按照Fog和CarrierWave的github页面上的文档操作了。

据我所知,我应该使用.bashrc来存储我的密钥等,然后使用ENV['SECRET_KEY_NAME']方法调用它们。我已经在初始化器文件夹中设置了CarrierWave.rb和Fog.rb文件,所以我也不太确定我遗漏了什么。

此外,我也尝试过使用heroku config:set GOOGLE_STORAGE_SECRET_ACCESS_KEY_ID=XXXXXX,但似乎效果不佳。

我不太确定现在该做什么,以及在尝试推送到Heroku时可能导致错误的原因,更不用说在生产中是否可以工作了。

编辑:

我认为错误很大程度上来自fog.rb文件。因此,我将其修改为:

代码语言:javascript
复制
GoogleStorage = Fog::Storage::Google.new(
  google_project: 'XXX',
  google_client_email: 'XXX',
  google_json_key_location: '~/.fog/XXXX.json'
)

现在,当我尝试推送Heroku时,我得到的错误是

代码语言:javascript
复制
Errno::ENOENT: No such file or directory @ rb_sysopen - /app/.fog/XXX.json

为了分享,我在~目录下创建了一个.fog文件夹。在我在Private JSON key中添加的.fog文件夹中。

所有的帮助和建议都将非常感谢。谢谢!

EN

回答 1

Stack Overflow用户

发布于 2016-09-26 17:50:20

因此,我已经解决了这个问题,并成功地将我的代码推送到Heroku。

请注意,这并不意味着它在生产中可以完美运行,它只是意味着我现在可以毫无错误地推送到Heroku

所以有两个主要的错误。

1) app中不包含私钥JSON文件。

2) config/initializers/fog.rb文件有误

为了解决第一个问题,我在我的应用程序中创建了一个.fog文件夹,并将其添加到我的Private Key JSON文件中,该文件来自谷歌的云平台。

接下来,我将config/initializers/fog.rb中的代码修改为:

代码语言:javascript
复制
GoogleStorage = Fog::Storage::Google.new(
  :google_project => 'XXXX',
  :google_client_email => 'XXXXX',
  :google_json_key_location => Rails.root.join('.fog/XXXX'),
  :google_storage_access_key_id => ENV['GOOGLE_STORAGE_ACCESS_KEY_ID'],
  :google_storage_secret_access_key => ENV['GOOGLE_STORAGE_SECRET_ACCESS_KEY']
)

然后,我可以成功地将我的代码推送到Heroku。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39697801

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档