Rails 3 & Paperclip: "non riconosciuto dal comando 'identifica'" - ruby-on-rails, macos, imagemagick, paperclip

Alcuni dettagli di sistema:

  • Mac OS X Lion 10.7.2, Rails 3, gemma Paperclip.
  • ImageMagick 6.7.3-0, binari installati utilizzando MacPorts in /opt/local/bin.
  • Utilizzo di WEBrick nell'ambiente di sviluppo.

Sto cercando di caricare le foto che dovrebbero ottenereridimensionato in miniature. Quando eseguo questa operazione, il file caricato originale viene salvato e si può accedere tramite HTTP correttamente. Quando provo ad accedere alla versione di anteprima, ottengo questo errore:

Routing Error
No route matches "[file_URL]"

Prima di questo, durante il caricamento di un file PNG valido, vedo questo errore nel mio registro WEBrick:

[paperclip] An error was received while processing: #<Paperclip::NotIdentifiedByImageMagickError: /var/folders/n4/62q22gb52rjd0h13cx_j8vv40000gq/T/stream20111020-24984-17560xt-0.png is not recognized by the "identify" command.>

fare which identify uscite:

/opt/local/bin/identify

chiamata identify con il percorso del file caricato identifica correttamente il file come file PNG.

ho confermato rails server avvia l'ambiente di sviluppo. Ho aggiunto il seguente in config/environments/development.rb:

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

Il mio modello di foto ha il seguente:

class Photo < ActiveRecord::Base
has_attached_file :file, :default_style => :view, :styles => {
:view => { :geometry => "520x390>", :format => "jpg" },
:preview => { :geometry => "160x120>", :format => "jpg" } }
validates_attachment_content_type :file,
:content_type => [ "image/jpeg", "image/pjpeg", "image/png" ]
end

Il mio controller Foto:

class PhotosController < ApplicationController
# ...
def create
@photo = Photo.create params[:photo]
end
end

Come ho detto, posso accedere alle immagini originali nel percorso dell'URL system/files/:id/original, ma le versioni ridimensionate che voglio non sono accessibili e non si trovano nel filesystem. Il log di WEBrick suggerisce che Paperclip non può nemmeno che ImageMagick identifichi le immagini prima di ridimensionarle.

Qualche idea? Grazie in anticipo!

risposte:

0 per risposta № 1

Questa potrebbe essere una domanda doppia, come detto sopra, ma questo problema è stato causato da un recente bug in ImageMagick 6.7.3-0 risolto subito dopo in 6.7.3-1. Anche MacPorts è stato aggiornato con la nuova versione.

In 6.7.3-0, indicando il numero di fotogramma nel percorso del file (ad es. identify /path/to/file.png[0]) causato da ImageMagick a segfault ("Errore di segmentazione 11"). Paperclip ha specificato il numero di fotogramma per assicurarne l'elaborazione del primo fotogramma o pagina di un file immagine.

La nuova versione di ImageMagick ha risolto questo problema. Il bug è stato menzionato su MacPorts:

https://trac.macports.org/ticket/31643


Menu