Carrierwave / Fog / S3“不是公认的存储提供商”

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

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

我已经确定我有Carrierwave和Fog的最新gem。 这是在我的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 

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

好吧,我是个白痴。 🙂

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

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

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