【问题标题】:CarrierWave not working with Fog and S3: ArgumentError..."is not a recognized storage provider"CarrierWave 不适用于 Fog 和 S3:ArgumentError...“不是公认的存储提供商”
【发布时间】:2012-03-15 15:37:49
【问题描述】:

也许这是 CarrierWave 中的一个错误?我在这里阅读了类似的问题,尝试了示例代码并重现了一个新应用程序,但它无法正常工作。

我尝试了旧应用程序,其代码类似于 Github 上的示例,但现在无法正常工作。

完整跟踪:here 宝石文件

source 'https://rubygems.org'

gem 'rails', '3.2.2'

gem 'mini_magick', '~> 3.4'
gem 'carrierwave', '~> 0.5.8'
gem 'fog'
gem 'activeadmin', '~> 0.4.3'
gem 'httparty'
gem 'dalli'
gem 'json'
gem "mercury-rails", :git => "https://github.com/jejacks0n/mercury.git"
gem 'newrelic_rpm'

group :assets do
  gem 'sass-rails',   '~> 3.2.4'
  gem 'coffee-rails', '~> 3.2.2'
  gem 'uglifier', '>= 1.0.3'
end

gem 'jquery-rails'
gem 'jquery_datepicker'
group :development do
  gem 'sqlite3'
end

group :production do
  gem 'pg'
end

这是载波配置:

# config/carrierwave.rb
# encoding: utf-8
require 'carrierwave'

CarrierWave.configure do |config|
  config.fog_credentials = {
    :provider               => 'AWS',       # required
    :aws_access_key_id      => 'ACCESS_KEY', # required
    :aws_secret_access_key  => 'SECRET_KEY', # required
    :region                 => 'eu-west-1'  # optional, defaults to 'us-east-1'
  }
  config.fog_directory  = 'lkrails'                     # required
  config.fog_host       = 'https://lkrails.s3-eu-west-1.amazonaws.com'
  config.fog_public     = true # optional, defaults to true
  config.fog_attributes = {'Cache-Control'=>'max-age=315576000'}  # optional, defaults to {}

   # Make the tmp dir work on Heroku
   #  config.cache_dir = "#{Rails.root}/tmp/uploads"
end

这是上传者

# uploaders/images_uploader.rb
class ImagesUploader < CarrierWave::Uploader::Base
    include CarrierWave::MiniMagick
    storage :fog

    def store_dir
        "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
    end
    version :tiny do
       process :resize_to_limit => [25, 25]
    end
    version :thumb do
       process :resize_to_limit => [50, 50]
    end
    version :medium do
        process :resize_to_limit => [120, 120]
    end

    def extension_white_list
       %w(jpg jpeg gif png)
    end

    def filename 
    if original_filename 
      @name ||= Digest::MD5.hexdigest(File.dirname(current_path))
      "#{@name}.#{file.extension}"
    end
end

【问题讨论】:

    标签: ruby-on-rails amazon-s3 amazon-web-services carrierwave fog


    【解决方案1】:

    根据您的日志文件,您的雾版本非常旧。您使用的是 0.3.25,最新的标签是 1.1.2。尝试这样做:

    bundle update fog
    

    您的carrierwave 版本同样过时,所以我也想bundle update carrierwave。这应该有助于纠正这个问题。

    【讨论】:

      【解决方案2】:

      为了完整性添加这个...

      在收到此错误消息后,我的头撞在墙上几个小时后,我发现在载波初始化程序的开头有这行:

      if Rails.env.test?
        ...
      

      所以初始化器只在测试环境中被考虑。删除它后,一切都按预期工作。

      【讨论】:

      • 在将boilerplate/verbatim answers 复制并粘贴到多个问题时要小心,这些问题往往会被社区标记为“垃圾邮件”。如果您这样做,则通常意味着问题是重复的,因此请标记它们。
      • @Kev 抱歉。这些问题是相关的,并显示为此错误消息的前两个 Google 结果,但问题不重复。我只是希望从其他人处理这个错误中节省一些时间。
      猜你喜欢
      • 2013-04-13
      • 1970-01-01
      • 2012-09-04
      • 2012-11-11
      • 2018-04-09
      • 2012-03-21
      • 2011-07-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多