首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Google云存储时未初始化常量CarrierWave:: Storage ::Fog

使用Google云存储时未初始化常量CarrierWave:: Storage ::Fog
EN

Stack Overflow用户
提问于 2016-11-22 05:03:53
回答 2查看 1.2K关注 0票数 2

我见过很多其他人和我有类似的问题,但列出的解决方案都不适用,所以我希望这个很棒的社区能帮助我解决问题。

我正在尝试使用Heroku,但我的主机是sitemap_generator,所以我尝试按照他们的文档here使用Carrierwave将网站地图上传到Google Cloud Storage。我已经使用谷歌云上传我的所有作品的图像,所以我希望它会很简单,但是文件没有被上传。文档中说您需要添加:

代码语言:javascript
复制
config.storage = :fog

添加到您的carrierwave配置文件中,但是每当我添加它时,我都会得到以下错误:

代码语言:javascript
复制
gems/carrierwave-49fdad1ec6ca/lib/carrierwave/uploader/configuration.rb:75:in `eval': uninitialized constant CarrierWave::Storage::Fog (NameError)

我的Carrierwave配置如下所示:

代码语言:javascript
复制
CarrierWave.configure do |config|
     config.cache_dir = "#{Rails.root}/tmp/"
     config.storage = :fog
     config.fog_credentials = {
         :provider => 'Google'
     }
     config.fog_directory = 'bucket-name'
     config.asset_host = 'https://domain.storage.googleapis.com'
end

(fog_directory和asset_host被替换为虚拟值)

在我的gem文件中,我有:

代码语言:javascript
复制
gem 'fog'
gem 'carrierwave', github: 'carrierwaveuploader/carrierwave'

我见过很多使用AWS的人都有同样的错误,但他们的解决方案是改用fog gem而不是fog-aws (我已经在这么做了),并且需要fog/aws。我是这样测试的:

代码语言:javascript
复制
gem 'fog', require: 'fog/google'

但是仍然有同样的问题。

有没有人能建议我做些什么来尝试解决这个问题?任何帮助都将不胜感激!

非常感谢

EN

回答 2

Stack Overflow用户

发布于 2018-07-06 03:11:46

我在亚马逊S3上使用fog-aws时也遇到了同样的错误。似乎这个错误发生在存储是雾的时候,不管是亚马逊s3还是google cloud。

我使用carrierwave gem上传用户资料图片,所以我通过在凭证配置后移动存储配置来解决这个问题,如下所示:

代码语言:javascript
复制
CarrierWave.configure do |config|
  if Rails.env.staging? || Rails.env.production?
    config.fog_provider = 'fog/aws'
    config.fog_credentials = {
      provider: 'AWS',
      aws_access_key_id: ENV['AWS_ACCESS_KEY_ID'],
      aws_secret_access_key: ENV['AWS_SECRET_ACCESS_KEY'],
      region: ENV['AWS_REGION']
    }
    config.storage = :fog
    config.fog_directory = ENV['S3_BUCKET']
    config.fog_public    = true
    config.fog_attributes = { cache_control: "public, max-age=#{365.days.to_i}" }
  else
    config.storage = :file
    config.enable_processing = Rails.env.development?
  end
end

另一种解决方案是在上面的文件中在顶部添加require 'carrierwave/storage/fog'。对我来说,这个文件是初始化程序目录下的carrier_wave.rb。

在我找到上述解决方案的地方添加链接。

Medium Carrierwave Fog

票数 0
EN

Stack Overflow用户

发布于 2019-02-20 19:10:57

我知道这篇文章已经7个月了,但我只是浪费了36小时来实现同样的宝石……不走运。文档似乎有点过时了。

如果你问我,fog-google在这一点上是不必要的!

尝试使用这个gem来实现CarrierWaveUploader与谷歌的集成。

carrierwave-google-storage github

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

https://stackoverflow.com/questions/40729355

复制
相关文章

相似问题

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