ruby-on-rails - notidentifiedbyimagemagickerror - paperclip::errors::missingrequiredvalidatorerror
rails paperclip and passenger `no está reconocido por el comando ''identify'' (14)
Cuando cargo una foto, mi modelo falla la validación, se equivoca, incluso sin ninguna validación Me devuelve este error:
/tmp/stream20100103-13830-ywmerx-0 is not recognized by the ''identify'' command. and
/tmp/stream20100103-13830-ywmerx-0 is not recognized by the ''identify'' command.
Estoy seguro de que esto no está relacionado con ImageMagick porque eliminé el procesamiento de imágenes de la carga, también intenté subir diferentes tipos de mime, como archivos .txt y similares.
Además, encontré algo que puede funcionar. Una publicación de blog afirma que pongo lo siguiente en mi entorno (en este caso, desarrollo.rb)
Paperclip.options[:command_path] = "/opt/local/bin"
Esto está relacionado con ImageMagick. La opción de command_path
necesita apuntar a la ubicación donde está instalada la identify
. Desde la línea de comandos, puede determinar esto con which identify
.
$ which identify
/some/path/to/identify
Después, configure command_path
para esa ruta (en config/environments/development.rb
):
Paperclip.options[:command_path] = "/some/path/to"
Esto funcionó desde http://arglebargle.posterous.com/path-environment-variable-for-rails-using-pas
Pon algo así en VirtualHost (o donde sea que esté configurado el pasajero):
SetEnv PATH /opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/usr/local/mysql/bin
Esto me sucedió cuando actualicé OS X a Lion.
Resuelto por ...
hacer una
brew list
para ver todos los paquetes que tiene y guardarlo en alguna partedesinstalar homebrew (ver ''Desinstalación'' en esta página https://github.com/mxcl/homebrew/wiki/Installation )
reinstalar homebrew con el habitual
ruby -e "$ (curl -fsSL https://raw.github.com/gist/323731 )"
reinstalando todos los paquetes
brew install ghostscript
brew install imagemagick
etc para cualquier otro que tenga
Nota, antes de que se reinstalara ghostscript, tuve que aplicar la sugerencia que se encuentra aquí: https://github.com/mxcl/homebrew/issues/6381
brew edit ghostscript
A continuación, agregue el bloque de def patches
al final de la clase Ghostscript:
class Ghostscript < Formula
.... existing code here ....
def patches
{ :p0 => ''http://ftp.netbsd.org/pub/NetBSD/packages/pkgsrc/print/ghostscript/patches/patch-ak'' }
end
end
El parche anterior se puede combinar para cuando lo leas.
Después de eso, Imagemagick detectó jpegs correctamente de nuevo.
TL; DR desinstala completamente y vuelve a instalar homebrew, ghostscript (con parche para Lion) y imagemagick
Esto también puede deberse al uso de versiones bastante antiguas de Paperclip
(por ejemplo, versión 2.4.x) con versiones más nuevas e incompatibles de la gema de la Cocaine
.
Lo hice funcionar instalando brew, http://mxcl.github.com/homebrew/
Y luego escribí:
brew install imagemagick
y después de eso
gem install rmagick
Luego, simplemente eliminé las rutas de opción (Paperclip.options [: ruta_de_comandos] = "...") que escribí manualmente en environment / development.rb e initialize / paperclip.rb
Se agregó rmagick al archivo gem. ¡Reinicié el servidor y funcionó como un encanto!
Para agregar una solución potencial más que no he visto discutido mucho: ldconfig
.
Tuve el mismo problema que acabo de pasar un día y medio rastreando. DYLD_LIBRARY_PATH
adecuadamente ImageMagick desde el origen con el soporte adicional png y jpeg, agregué LD_LIBRARY_PATH
y DYLD_LIBRARY_PATH
a las variables de entorno, establecí la opción :command_path
para Paperclip en la configuración de mi entorno de producción. Aunque los comandos de ImageMagick funcionaron desde la línea de comandos, nada solucionó mi problema con Paperclip.
Finalmente, después de ver a ldconfig
mencionado de pasada, lo intenté por capricho, y funcionó.
sudo ldconfig
Pude haber logrado lo mismo reiniciando Apache o el hardware, pero no estaba en condiciones de hacerlo por mi cuenta.
Por lo general, ayuda a especificar la ruta al comando de identificación con ..
Paperclip.options[:command_path] = "/your/path/to/identify"
.. como los otros mencionaron. Pero el problema también puede ocurrir si hay una discrepancia en la versión, recientemente actualicé la versión de Ruby-on-Rails de una aplicación (a Rails 3.1.10), pero olvidé actualizar la gema paperclip. Después de actualizar la versión del clip a 2.8.0, funcionó de nuevo.
Pude resolver esto haciendo lo siguiente:
brew uninstall imagemagick
brew install imagemagick
Si usted es un usuario de Mac y esto solo ha sido un problema desde que actualizó su sistema operativo a 10.8, podría tratarse de un problema de X11, como se describe aquí http://support.apple.com/kb/HT5293
identificar ~ / ruta / a / imagen
No funcionaba para mí incluso después de probar todas las correcciones anteriores. Instalé XQuartz desde http://xquartz.macosforge.org/landing/ y ahora está funcionando de nuevo.
Puede ayudar a otros también ...
Solo para decir, también puedes tener este mensaje de error por lo que significa.
En mi caso, el tamaño del archivo era de 0 bytes porque me olvidé de tirarlo después de escribirlo desde un Zip, y pasar este recurso a Paperclip.
Puede ser interesante comprobar que realmente puede abrir el archivo con su visor preferido antes de leer la otra respuesta de este hilo :)
También recibirá este mensaje de error si intenta subir un archivo que contiene dos puntos en su nombre a partir de la última versión.
Tuve este problema cuando usé OSX + MAMP + Passenger + Paperclip y después de configurar el command_path y asegurarme de que Imagemagick se instaló correctamente mediante brew, estableciendo adecuadamente la temperatura y cargando directorios para el pasajero a algo escribible, ¡aún así no funcionaría!
La solución fue editar el archivo envvars para MAMP en / Applications / MAMP / Library / bin / envvars y comentar la línea DYLD_LIBRARY_PATH de exportación.
Es decir, cambia la línea que dice
export DYLD_LIBRARY_PATH
a
# export DYLD_LIBRARY_PATH
Luego reinicie MAMP y sienta la euforia cuando sus imágenes se carguen / redimensionen correctamente.
eso también me pasó, probé todo el método mencionado anteriormente. Solo cambio la versión del clip, luego todo funciona bien.
si estás intentando subir un video, entonces, ''identificar'' intenta delegar el trabajo en ffmpeg. ejemplo
identify Desktop/00-ScalingRails-Introduction.mp4 [alaa@Zero>/home/alaa]
identify: delegate failed `"ffmpeg" -v -1 -vframes %S -i "%i" -vcodec pam -an -f rawvideo -y "%u.pam" 2> "%Z"'' @ error/delegate.c/InvokeDelegate/1061.
identify: unable to open image `/tmp/magick-XXHF4ImT.pam'': @ error/blob.c/OpenBlob/2498
en este ejemplo, la instalación de ffmpeg eliminó el mensaje de error de la lista de errores de validación