【问题标题】:Carrierwave / Fog / S3 "is not a recognized storage provider"Carrierwave / Fog / S3“不是公认的存储提供商”
【发布时间】:2013-04-13 10:58:09
【问题描述】:

我有一个使用 Carrierwave 上传文件的 Rails 应用程序。它一直运行良好,但我想开始使用 Amazon S3 进行图像存储。我收到此错误:

ArgumentError ( is not a recognized storage provider):
  app/controllers/salons_controller.rb:52:in `update'

我已确保我拥有适用于 Carrierwave 和 Fog 的最新宝石。这是在我的 Gemfile 中:

gem 'carrierwave'
gem 'aws-sdk'
gem 'fog'

fog.rb 看起来像:

CarrierWave.configure do |config|
    config.fog_credentials = {
        :provider              => 'AWS',
        :aws_access_key_id     => 'MYACCESSKEY',
        :aws_secret_access_key => 'MYSECRETKACCESSKEY',
        :region                => 'us-east-1'
    }

    config.fog_directory = 'andrunix'
    config.fog_public    = true
    config.fog_attributes = {'Cache-Control'=>'max-age=315576000'} 

结束

Uploader 类如下所示:

class SalonImageUploader < CarrierWave::Uploader::Base
  include CarrierWave::RMagick
  storage :fog

  def store_dir
    # "andrunix" is the bucket name on S3

    "andrunix/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
  end
end

如果我将存储更改回“文件”,它可以正常工作。将存储设置为“雾”会生成此错误。

【问题讨论】:

    标签: ruby-on-rails amazon-s3 carrierwave


    【解决方案1】:

    好吧,我是个白痴。 :)

    在某些时候,我不知道在哪里,我在 lib/carrierwave/storage 目录中添加了一个带有 CarrierWave 配置的fog.rb 文件。我绝望了,支付了 Railscasts 订阅费,这样我就可以观看第 383 集(http://railscasts.com/episodes/383-uploading-to-amazon-s3?autoplay=true),并在 3:02 发现我的方式错误。 Carrierwave 配置需要放在 config/initializers/carrierwave.rb 中。

    我不知道我从哪里得到这个其他位置,但是一旦我将配置移动到正确的位置,一切都很好。

    【讨论】:

    • 你不是白痴。我做了同样的事情!这是因为carrierwave自述文件中的措辞不明确(搜索lib/carrierwave/storage)。
    • 我也做了同样的事情。 Carrierwave 文档列出了 lib/carrierwave/storage/fog.rb 并没有指定您提供的路径。
    【解决方案2】:

    我刚刚遇到了同样的问题,人们必须意识到配置文件中的任何拼写错误:“config/initializers/carrierwave.rb”,都会导致该错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-04
      • 1970-01-01
      • 2018-04-09
      • 2012-03-21
      • 2011-07-27
      • 1970-01-01
      • 1970-01-01
      • 2012-11-11
      相关资源
      最近更新 更多