PaperClip Error NotIdentifiedByImageMagickError when scaling images

humbledaisy picture humbledaisy · Apr 1, 2013 · Viewed 17.2k times · Source

I have been banging my head against this for several days. Recently, my image uploader has stopped working properly. I have investigated several possibilities, but have none of the suggested solutions have worked in my case.

The error message is:

#<Paperclip::Errors::NotIdentifiedByImageMagickError:Paperclip::Errors::NotIdentifiedByImageMagickError> 

Here are the details:

  • Mac OS X 10.8.3
  • ImageMagick 6.8.4-4 2013-03-29
  • libtool => /usr/bin/libtool
  • Rails 3.2.13
  • Ruby 1.9.3p194

development.rb contains appropriate path (and I have verified that it is correct using which identify)

Paperclip.options[:command_path] = "/usr/local/bin/"

Gemfile.lock (relevant portion)

paperclip (3.4.1)
  activemodel (>= 3.0.0)
  activerecord (>= 3.0.0)
  activesupport (>= 3.0.0)
  cocaine (~> 0.5.0)

MODEL (I am updating a classroom object, but the picture resides in the location model. (Classroom has_one :location, :as => :locatable)

Model location.rb

class Location < ActiveRecord::Base
  ## Paperclip method for uploading location images

  has_attached_file :picture, :styles => {:show => "1200x500#", :medium => "300x300#", :thumb => "100x100>"}, :convert_options => {:show => "-gravity center"}  
  has_attached_file :building_sign, :styles => { :show => ["1200x500#", :jpg], :medium => ["300x300#", :jpg], :thumb => ["100x100#", :jpg] }, :convert_options => {:show => "-gravity center"}
  belongs_to :locatable, :polymorphic => true
  belongs_to :location_type  
  validates :name,  :presence => true

  validates :latitude, :presence => true,
                       :length => {:within => 9..18},
                       :numericality => true
  validates :longitude, :presence => true,
                        :length => {:within => 9..18},
                        :numericality => true
end

Controller classrooms_controller.rb

def update
  @classroom = Classroom.find_by_facility_code_heprod(params[:id].upcase)

  respond_to do |format|
    if @classroom.update_attributes(params[:classroom])
      format.html { redirect_to(@classroom, :notice => 'Classroom was successfully updated.') }
      format.xml  { head :ok }
    else
      format.html { render :action => "edit" }
      format.xml  { render :xml => @classroom.errors, :status => :unprocessable_entity }
    end
  end
end

What I've tried.

  • I've made sure that the image name is simple (USB2230.jpg), no colons.
  • I've updated the version of ImageMagick to the most recent.
  • I've also re-downloaded and reinstalled the CommandLine Tools for 10.8.3 (someone suggested that the issue might be related to an outdated libtool).
  • I've rebooted the computer.
  • I've tried variations on gem versions including

    # variation 1
    gem 'paperclip', '~> 2.8.0'
    gem "cocaine", "=0.3.2"
    
    # variation 2
    gem "paperclip", "~> 3.4.0"
    gem "cocaine", "= 0.4"
    
    # variation 3 (which is what is reflected in the included Gemfile.lock info above).
    gem "paperclip", "~> 3.4.0"
    

If I remove the scaling,

:styles => {:show => "1200x500#", :medium => "300x300#", :thumb => "100x100>"},
:convert_options => {:show => "-gravity center"}

the upload works, but I kind of need the scaling ;-)

Can anyone see something I am missing?

Answer

rwc9u picture rwc9u · Jun 25, 2013

We just ran into this issue, and it turned out to be an issue where ghostscript wasn't installed. I took the advise of Scott Cornwell and removed the silencing of errors, and then determined that convert was failing because ghostscript wasn't available.

   brew install ghostscript 

Fixed the issue for us.