Problema de ImageMagick (rmagick) y passenger (mod_rails)
Recientemente en uno de mis proyectos estamos utilizando el plugin para subir archivos paperclip tutorial, este plugin tiene características de re-dimension de imágenes pero dentro de nuestro servidor web no funcionaba, lo que nos parecio bastante raro, buscando por internet encontré que el problema se debía al momento de usar mod_rails, el cual no cargaba las librerías necesarias, en este caso a ImageMagick, aqui el mismo problema pero para oracle y algunas de sus librerias.
La solución es la siguiente:
Ir a la carpeta del ejecutable de ruby, en mi caso utilizo ruby-enterprise y que instale en /opt/ruby/bin, o en una carpeta cualquiera que tengas acceso se crea el archivo ruby_rmagick asi:
sudo vi /opt/ruby/ruby_rmagick
Y dentro de este archivo se añade:
#!/bin/bash
export MAGICK_HOME="/usr/local/lib/ImageMagick-6.4.2" # ruta a ImageMagick
export DYLD_LIBRARY_PATH="$MAGICK_HOME/lib"
export PATH=$MAGICK_HOME/bin:/usr/local/bin/:$PATH /opt/ruby/bin/ruby $* # ruta al Interprete de ruby
Esto añade las variables necesarias y llama al interprete de ruby, lo guardamos y le asignamos permisos de ejecucion:
sudo chmod +x /opt/ruby/ruby_rmagick
Ahora editamos el archivo con el que se configuro mod_rails para que cargue el nuevo archivo que acabamos de grabar:
LoadModule passenger_module /opt/ruby/lib/ruby/gems/1.8/gems/passenger-2.0.2/ext/apache2/mod_passenger.so
PassengerRoot /opt/ruby/lib/ruby/gems/1.8/gems/passenger-2.0.2
PassengerRuby /opt/ruby/bin/ruby_rmagick # Aqui se cambia al nuevo interprete
Este archivo de configuracion es para passenger 2.0.2 para versiones 1.X.X debes de cambiar
RailsRuby /usr/local/bin/ruby_rmagick
Actualizacion: 18 junio 2009
He arreglado un poco las instrucciones, al parecer lo hice muy a la rapida.


Edgar J. Suarez dijo
5 de Diciembre del 2008 a las 4:38 am
Hola carakan,
A mi me pasa un problema con paperclip y passenger también.
Cuando subo una imagen, el archivo se sube correctamente pero no se ve en la página… sólo se ve el nombre. Si le cambio los permisos al archivo que se subio a 644, la imagen se ve correctamente. Esto es usando passenger.
Pero si subo una imagen en una aplicacion corriendo sobre mongrel, entonces la imagen se ve perfectamente. Incluso corriendo mongrel puedo ver la imagen que subi con passenger sin necesidad de poner dichos permisos al archivo…
Esto es muy extraño, he buscado soluciones pero ninguna me funciona hasta ahora… alguna sugerencia?
Gracias!
Carlos Ramos dijo
5 de Diciembre del 2008 a las 10:37 am
Es extraño ese comportamiento, a mi parecer puede ser que los permisos de Apache no esten configurados correctamente, o a su ves no instalaste en modo administrador mod_rails/mod_rack o ImageMagick es bastante extraño.
Otro es intentar dar permisos de grupo (apache) a config/envinroment.rb asi:
sudo chown apache config/envinroment.rb
Saludos cordiales.
pedro consuegra dijo
18 de Junio del 2009 a las 9:17 am
hola
he venido presentando este mismo problema en uno de mis proyectos y de antemano te doy las gracias por publicar la solucion, pero no entiendo muy bien donde es que debo guardar el archivo ruby_rmagick.rb, mi servidor es un VPS con railplayground te agradeceria mucho si pudieras darme una ayuda adicional
Carlos Ramos dijo
18 de Junio del 2009 a las 11:47 am
He arreglado el tutorial, espero que ahora este mejor explicado :D.
Saludos
Boris Barroso dijo
18 de Junio del 2009 a las 2:40 pm
Gracias amigo este es un salvador. Ya que realmente Rmagick es muy complicado y requiere tener muchos recaudos. Por los visto compilaste ImageMagick, quisiera saber cual es el Sistema Operativo que usaste
Carlos Ramos dijo
19 de Junio del 2009 a las 1:04 pm
Lo probe en CentOs y Ubuntu y funciona bien.
CaDs dijo
1 de Febrero del 2010 a las 12:59 pm
También puedes crearte un inicializador dentro de /config/initializers y escribir esta opción para Paperclip:
Paperclip.options[:command_path] = /path/to/identify/command/
donde /path/to/identify/command/ lo puedes obtener haciendo un
whereis identify si usas ubuntu
which identify si usas mac
en mi caso tengo
Paperclip.options[:command_path] = “/opt/local/bin/”
Así te ahorras tocar esos archivos tan delicados
Saludos