graffetta che accetta jpg e png sulla produzione
-
06-07-2019 - |
Domanda
Sto usando il plug-in PaperClip nella mia applicazione Rails come segue:
has_attached_file :photo, :styles => {:small => '64X64>', :medium => '250X250>'},
:url => "/assets/user_photos/:id/:style/:basename.:extension",
:path => ":rails_root/public/assets/user_photos/:id/:style/:basename.:extension"
# validates_attachment_presence :photo
validates_attachment_content_type :photo, :content_type => ['image/jpeg', 'image/png','image/gif']
validates_attachment_size :photo, :less_than => 1.megabytes
Funziona bene sullo sviluppo (Mac OSX + Mongrel). Ma quando lo metto in produzione (Linux Debian + Apache / Passenger) accetta solo .gif e ottengo il seguente errore per .png e .jpg:
Photo /tmp/stream20091028-20066-1t1a0oz-0 is not recognized by the 'identify' command.
Photo /tmp/stream20091028-20066-1t1a0oz-0 is not recognized by the 'identify' command.
Ho provato ad aggiungere la seguente riga come suggeriscono alcuni tutorial, ma non mi è stato d'aiuto!
Paperclip.options[:command_path] = "/usr/local/bin"
Soluzione
Sul tuo server di produzione, prova a eseguire:
which identify
Questo dovrebbe darti il ??tuo percorso al file binario di identificazione di ImageMagick - in caso contrario non hai ImageMagick installato o non è nel tuo percorso.
Se restituisce qualcosa come " / usr / bin / identifica " ;, allora vorrai impostare le opzioni Paperclip nel tuo file di ambiente production.rb su:
Paperclip.options[:command_path] = "/usr/bin"
Altri suggerimenti
Nel caso in cui qualcun altro incontri questo problema, ho avuto lo stesso errore sul mio Mac OSX Snow Leopard durante l'elaborazione dei file JPG (i file GIF hanno funzionato bene). Sono in esecuzione Rails 3.0.5 e Paperclip 2.3.11.
[paperclip] An error was received while processing: #<Paperclip::NotIdentifiedByImageMagickError: /var/folders/9D/9DvX1hqSFr04U3drvD9o0U+++TI/-Tmp-/stream20110420-50661-l9je0z.jpg is not recognized by the 'identify' command.
Ho risolto il problema installando dalla sorgente la libreria di codifica jpeg disponibile su http: //www.ijg.org/files/jpegsrc.v8c.tar.gz .
cd /usr/local/src
tar xvfz jpeg-8c.tar.gz
cd jpeg-8c
export MACOSX_DEPLOYMENT_TARGET=10.6
./configure --enable-shared --prefix=$CONFIGURE_PREFIX
make
sudo make install
Quindi ho reinstallato ImageMagick dal sorgente:
cd /usr/local/src
tar xvfz ImageMagick-6.6.9-5.tar.gz
cd ImageMagick-6.6.9-5
export CPPFLAGS=-I/usr/local/include
export LDFLAGS=-L/usr/local/lib
./configure --prefix=/usr/local --disable-static --with-modules --without-perl --without-magick-plus-plus --with-quantum-depth=8 --disable-openmp
make
sudo make install
Successivamente sono stato in grado di caricare correttamente i file JPG con Paperclip.
[paperclip] convert '/var/folders/9D/9DvX1hqSFr04U3drvD9o0U+++TI/-Tmp-/stream20110420-86578-3ntsgn.jpg[0]' -resize "100x100>" '/var/folders/9D/9DvX1hqSFr04U3drvD9o0U+++TI/-Tmp-/stream20110420-86578-3ntsgn20110420-86578-iiszw5' 2>/dev/null
...
[paperclip] saving /Users/xxx/myrailsapp/public/system/images/5/original/IMG_0001.jpg
Ho avuto lo stesso problema dopo l'aggiornamento a Lion. L'esecuzione di "identifica immagine.jpg" ha generato l'errore dyld: libreria non caricata
.
Questo post ha aiutato a risolvere il problema.