2010-04-15 6 views
5

He estado buscando cómo resolver este problema pero no he podido encontrar ninguna solución real y funcional.Eliminar el error innecesario planteado por paperclip - nombre de archivo no es reconocido por el comando 'identificar'

modelo de usuario:

validates_attachment_content_type: avatar,: content_type => [ 'image/jpeg', 'imagen/pjpeg', 'imagen/x-png', 'imagen/png', 'image/gif ']

error innecesario aparece cuando se carga tipo de archivo no válido:

Avatar /tmp/sample,23283,0.txt is not recognized by the 'identify' command. 

detalles del servidor: Ubuntu y Debian

que identifican resultados a /usr/bin/identifican

Especificar ruta de comandos no resuelve el problema:

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

¿Alguna idea?

Miré el archivo geometry.rb y parece que hay algo mal con él.

def self.from_file file 
    file = file.path if file.respond_to? "path" 
    geometry = begin 
       Paperclip.run("identify", %Q[-format "%wx%h" "#{file}"[0]]) 
      rescue PaperclipCommandLineError 
       "" 
      end 
    parse(geometry) || 
    raise(NotIdentifiedByImageMagickError.new("#{file} is not recognized by the 'identify' command.")) 
end 

Avísame si alguien ha resuelto el mismo problema y cómo. Muchas gracias.

Respuesta

2

He tenido el mismo problema: el código Paperclip no ha sido el culpable.

En mi configuración Estoy en MacOSX con una descarga binaria de ImageMagick en /usr/local/ImageMagick-6.6.1/bin y estoy carriles de rodadura bajo Apache/pasajero. Tengo Paperclip instalado como un complemento.

Hay 3 pasos necesarios para conseguir este trabajo:

1: Asegúrese de que usted tiene ImageMagick trabajando a nivel de línea de comandos de UNIX. Esto implica agregar a su trayectoria y exportación de estas variables de entorno (que apuntan a su instalacion de, por supuesto)

MAGICK_HOME=/usr/local/ImageMagick-6.6.1 
DYLD_LIBRARY_PATH=/usr/local/ImageMagick-6.6.1/lib 

Comprobar que identifican las obras con sus imágenes a nivel de línea de comandos.

2: Tell Paperclip dónde encontrar los ejecutables de ImageMagick En config/environment.rb poner esto en la parte inferior del archivo

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

En este punto, después de reiniciar pasajeros, se vería que 'identificar' se ejecuta desde Paperclip pero no es capaz de identificar el archivo ... el último paso es ...

3: Identificar las necesidades de esas dos variables de entorno exportados - y Apache/pasajero (u otros servidores web probablemente) no pasa a través de los que por defecto! En el archivo de host virtual de pasajeros añadir estas líneas:

SetEnv MAGICK_HOME /usr/local/ImageMagick-6.6.1 
    SetEnv DYLD_LIBRARY_PATH /usr/local/ImageMagick-6.6.1/lib 

Reiniciar Apache/pasajero y debería funcionar

buena suerte!

+1

Sí, pensé que reiniciar Apache debería funcionar. No en dreamhost sin embargo. Usamos servidores compartidos y & VPS. Funciona bien en VPS, por supuesto. – kgpdeveloper

+0

Esto lo arregló para mí, gracias! No olvide reiniciar el servidor después de cambiar el archivo de environment.rb relevante (s) – gef

1

Debe tener instalado ImageMagick que proporciona la identificar mando, y su ruta tiene que estar en la variable $PATH de los carriles de usuario se ejecuta como.

Se usa con clip para las opciones de escala y manipulación de imágenes, pero no está documentada como dependencia porque "puede" usar clips sin ella si acepta las imágenes tal como vienen.

Espero que ayude.

+0

Agregué/usr/bin a la ruta. Todavía sin suerte. Pero pude solucionar el problema al no usar <% = error_messages_for: user%> Estoy usando <% @ user.messages.each_full {| msg | hacer algo}%> – kgpdeveloper

+0

¿Subiste esa imagen antes de la validación de tipo ?, ¿puede ser un archivo txt? ¿Sucede con nuevos archivos? – Oinak

Cuestiones relacionadas