4

也許這是CarrierWave中的錯誤?我在這裏閱讀了類似的問題,嘗試了示例代碼並重現了一個新的應用程序,但它不起作用。CarrierWave無法使用霧和S3:ArgumentError ...「不是公認的存儲提供商」

我嘗試了一些舊應用程序,其代碼與Github上的示例類似,但現在不起作用。

完全跟蹤:here 的Gemfile

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 

這是carrierwave配置:

# 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 

回答

5

根據你的日誌文件,你的霧版本是非常非常古老的。你使用的是0.3.25,最近的標籤是1.1.2。試着這樣做:

bundle update fog 

你carrierwave的版本同樣是過時的,所以我最好bundle update carrierwave爲好。這應該有助於解決這個問題。

+0

你是一個救星! – 2012-03-15 17:48:49

+0

謝謝!!!!!!!!!!! – user2950593 2016-02-19 17:26:04

0

添加此爲了完整性......

砸我的頭撞在牆上了幾個小時與此錯誤消息後,我發現我有這條線在carrierwave初始化的開頭:

if Rails.env.test? 
    ... 

所以初始化只在測試環境中考慮。刪除它後,一切都按預期工作。

+0

在發佈複製並粘貼[樣板/逐字回答](http://stackoverflow.com/a/10583960/419)到多個問題時,請小心謹慎,這些問題往往會被社區標記爲「垃圾」。如果你這樣做,那麼它通常意味着問題是重複的,所以標記它們。 – Kev 2012-05-14 13:23:38

+0

@Kev對不起。這些問題是相關的,並且作爲前兩個Google結果顯示此錯誤消息,但問題不重複。我只是希望從處理這個錯誤的其他人那裏節省一些時間。 – alf 2012-05-14 14:05:45

相關問題