Carrierwave /雾/ S3“没有一个公认的存储供应商”(Carrierwave / Fog

2019-08-31 14:43发布

我有一个使用Carrierwave文件上传一个Rails应用程序。 据工作正常,但我要开始使用Amazon S3为我的图像存储。 我得到这个错误:

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

我已经确定我有Carrierwave与雾最新的宝石。 这是我的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'} 

结束

在上传类的样子:

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

如果我更改存储回“文件”,它工作正常。 设置存储为“雾”产生这个错误。

Answer 1:

OK,我是个白痴。 :)

在某些时候,我不知道在哪里,我加了一个fog.rb文件,我CarrierWave配置到lib / carrierwave /存储目录。 我绝望了,支付了Railscasts订阅,这样我可以看情节#383( http://railscasts.com/episodes/383-uploading-to-amazon-s3?autoplay=true ),并在3:02我发现了错误我的方式。 所需的Carrierwave构造被放置在配置/初始化/ carrierwave.rb。

我不知道我在哪里得到这个其他位置,但一旦我感动的配置到合适的位置,一切都很好。



Answer 2:

我只是碰到了同样的问题,人们必须意识到,在配置文件中的任何错字:“配置/初始化/ carrierwave.rb”,导致了错误。



文章来源: Carrierwave / Fog / S3 “is not a recognized storage provider”