Вопрос

Maybe this is a bug in CarrierWave? I read similar questions here, tried example code and to reproduce a new app, and it is not working.

I tried old apps with their code that is like the examples on Github, but now it doesn't work.

Full trace: 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

This is the carrierwave configuration:

# 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

This is The uploader

# 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
Это было полезно?

Решение

According to your logfile, your version of fog is very very old. You're using 0.3.25, and the most recent tag is at 1.1.2. Try doing this:

bundle update fog

Your version of carrierwave is similarly out of date, so I'd bundle update carrierwave as well. That should help correct this issue.

Другие советы

Adding this for completeness...

After smashing my head against the wall for hours with this error message, I found out that I had this line at the beginning of the carrierwave initializer:

if Rails.env.test?
  ...

So the initializer was only considered in the test environment. After removing it, everything worked as expected.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top