4

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
Sophia Gavish
  • 467
  • 2
  • 8
  • 16

2 Answers2

5

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.

Veraticus
  • 15,944
  • 3
  • 41
  • 45
1

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.

alf
  • 18,372
  • 10
  • 61
  • 92
  • Be careful when posting copy and paste [boilerplate/verbatim answers](http://stackoverflow.com/a/10583960/419) to multiple questions, these tend to be flagged as "spammy" by the community. If you're doing this then it usually means the questions are duplicates so flag them as such instead. – Kev May 14 '12 at 13:23
  • @Kev sorry. The problems are related and appear as the first two Google results for this error message, but the questions are not duplicates. I was just hoping to save some time from someone else dealing with this error. – alf May 14 '12 at 14:05