Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Carrierwave/Fog/S3“;不是公认的存储提供商”;_Ruby On Rails_Amazon S3_Carrierwave - Fatal编程技术网

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

Ruby on rails Carrierwave/Fog/S3“;不是公认的存储提供商”;,ruby-on-rails,amazon-s3,carrierwave,Ruby On Rails,Amazon S3,Carrierwave,我有一个Rails应用程序,它使用Carrierwave上传文件。它一直运行良好,但我想开始使用AmazonS3作为我的图像存储。我得到这个错误: ArgumentError ( is not a recognized storage provider): app/controllers/salons_controller.rb:52:in `update' 我已经确保我有最新的宝石卡里尔瓦夫和雾。这在我的文件中: gem 'carrierwave' gem 'aws-sdk' gem '

我有一个Rails应用程序,它使用Carrierwave上传文件。它一直运行良好,但我想开始使用AmazonS3作为我的图像存储。我得到这个错误:

ArgumentError ( is not a recognized storage provider):
  app/controllers/salons_controller.rb:52:in `update'
我已经确保我有最新的宝石卡里尔瓦夫和雾。这在我的文件中:

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
结束

Uploader类如下所示:

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
class-ImageUploader
如果我将存储更改回“文件”,它可以正常工作。将存储设置为“fog”会产生此错误

好吧,我是个白痴。:)

在某些时候,我不知道在哪里,我添加了一个带有CarrierWave配置的fog.rb文件到lib/CarrierWave/storage目录。我绝望了,付了一笔Railscasts订阅费,这样我就可以看第383集了。3:02我发现了我的错误。Carrierwave配置需要放在config/initializers/Carrierwave.rb中


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

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

你不是白痴。我也做了同样的事!这是因为carrierwave自述文件(搜索lib/carrierwave/storage)中的措辞模棱两可。Carrierwave文档列出了
lib/Carrierwave/storage/fog.rb
,没有指定您提供的路径。