ruby on rails - missingrequiredvalidatorerror - Error de PaperClip NotIdentifiedByImageMagickError al escalar imágenes
paperclip::errors::missingrequiredvalidatorerror (11)
Acabamos de encontrarnos con este problema, y resultó ser un problema donde no se instaló ghostscript. Tomé el consejo de Scott Cornwell y eliminé el silenciamiento de los errores, y luego determiné que la conversión estaba fallando porque ghostscript no estaba disponible.
brew install ghostscript
Solucionado el problema para nosotros.
Me he estado golpeando la cabeza contra esto durante varios días. Recientemente, mi cargador de imágenes ha dejado de funcionar correctamente. He investigado varias posibilidades, pero ninguna de las soluciones sugeridas ha funcionado en mi caso.
El mensaje de error es:
#<Paperclip::Errors::NotIdentifiedByImageMagickError:Paperclip::Errors::NotIdentifiedByImageMagickError>
Aquí están los detalles:
- Mac OS X 10.8.3
- ImageMagick 6.8.4-4 2013-03-29
- libtool => / usr / bin / libtool
- Rieles 3.2.13
- Ruby 1.9.3p194
development.rb
contiene la ruta apropiada (y he verificado que es correcta usando which identify
)
Paperclip.options[:command_path] = "/usr/local/bin/"
Gemfile.lock
(porción relevante)
paperclip (3.4.1)
activemodel (>= 3.0.0)
activerecord (>= 3.0.0)
activesupport (>= 3.0.0)
cocaine (~> 0.5.0)
MODELO (Estoy actualizando un objeto de clase, pero la imagen reside en el modelo de ubicación. (Classroom has_one :location, :as => :locatable)
Modelo location.rb
class Location < ActiveRecord::Base
## Paperclip method for uploading location images
has_attached_file :picture, :styles => {:show => "1200x500#", :medium => "300x300#", :thumb => "100x100>"}, :convert_options => {:show => "-gravity center"}
has_attached_file :building_sign, :styles => { :show => ["1200x500#", :jpg], :medium => ["300x300#", :jpg], :thumb => ["100x100#", :jpg] }, :convert_options => {:show => "-gravity center"}
belongs_to :locatable, :polymorphic => true
belongs_to :location_type
validates :name, :presence => true
validates :latitude, :presence => true,
:length => {:within => 9..18},
:numericality => true
validates :longitude, :presence => true,
:length => {:within => 9..18},
:numericality => true
end
Controlador classrooms_controller.rb
def update
@classroom = Classroom.find_by_facility_code_heprod(params[:id].upcase)
respond_to do |format|
if @classroom.update_attributes(params[:classroom])
format.html { redirect_to(@classroom, :notice => ''Classroom was successfully updated.'') }
format.xml { head :ok }
else
format.html { render :action => "edit" }
format.xml { render :xml => @classroom.errors, :status => :unprocessable_entity }
end
end
end
Lo que he intentado.
- Me he asegurado de que el nombre de la imagen sea simple (USB2230.jpg), sin dos puntos.
- He actualizado la versión de ImageMagick a la más reciente.
- También volví a descargar y reinstalé las herramientas de la línea de comandos para 10.8.3 (alguien sugirió que el problema podría estar relacionado con un libtool desactualizado).
- He reiniciado la computadora.
He intentado variaciones en versiones de gemas incluyendo
# variation 1 gem ''paperclip'', ''~> 2.8.0'' gem "cocaine", "=0.3.2" # variation 2 gem "paperclip", "~> 3.4.0" gem "cocaine", "= 0.4" # variation 3 (which is what is reflected in the included Gemfile.lock info above). gem "paperclip", "~> 3.4.0"
Si quito la escala,
:styles => {:show => "1200x500#", :medium => "300x300#", :thumb => "100x100>"},
:convert_options => {:show => "-gravity center"}
La carga funciona, pero necesito la escala ;-)
¿Alguien puede ver algo que me estoy perdiendo?
Acabo de resolver este problema. brew hace un directorio llamado Cellar, / usr / local / Cellar Verifica si no tienes dos ImageMagick, tuve uno llamado ImageMagick-Ruby182, así que, si lo tienes, ejecuta brew desinstala ImageMagick-Ruby182, y también el imagemagick normal y reinstalar la imagen mágica.
Por favor actualice la versión de la gema de clip y la gema de cocaína. Establecer la versión de PaperClip: 3.4.1 Establecer la versión de cocaína: 0.5.
Me enfrenté al mismo problema y mi problema ya estaba allí en los problemas de github de gemas de clips
Reinstalar libtool brew install libtool
funcionó para mí.
Solo para que conste:
brew uninstall libtool
brew install libtool
brew uninstall jpeg
brew install jpeg
brew link --overwrite jpeg
brew unlink freetype && brew link freetype
Tenía el mismo problema con image_magic que estaba rompiendo nuestra funcionalidad de clip en producción, pero no en desarrollo (extraño, lo sé). Sin embargo, incluso después de eliminar imagemagick de nuestro gemfile y Gemfile.lock localmente (ejecutando bundle install y todo eso) y luego desplegar de nuevo a producción en heroku, ¡el error persistió en producción! (raro, lo sé).
Lo que terminó haciendo el truco fue correr:
$ heroku repo:purge_cache -a myAppName
(Tomado de: https://github.com/heroku/heroku-repo#purge_cache )
Cuando implementas tu aplicación, Heroku almacena en caché algunas cosas como tus activos y gemas instaladas para acelerar la implementación. Aunque esta es una gran característica, puede tener efectos secundarios a veces, y en este caso, parece que algo de la joya imagemagick se "atoró" en el caché de la producción, por lo que la depuración resolvió el problema para nosotros (desde después de la depuración, su aplicación se reconstruirá desde cero en su próxima implementación)
Tenía el problema en el entorno de mi ventana, usando un clip 3.5.2, cocaína 0.5.3 e ImageMagic 6.8.8.
La solución fue agregar:
Paperclip.options[:command_path] = ''C:/Program Files/ImageMagick-6.8.8-Q16''
para config / environment / development.rb
Tengo el mismo problema, y lo resolví, cuando configuro los enlaces dinámicos en tiempo de ejecución del vinculador para crear los enlaces y el caché necesarios para las bibliotecas compartidas más recientes utilizando el comando ldconfig .
Así que necesitas usar el siguiente comando:
sudo ldconfig /usr/local/lib
En realidad, aconsejo reinstalar imagemagick usando los pasos en el how-to-install-image-magick-and-setup-paperclip .
Tuve el mismo problema, aunque mi servidor está en Linux. No puedo decirle exactamente cómo hacerlo porque no tengo una Mac para probar, pero espero que esto le indique la dirección correcta.
Esto me funcionó con ImageMagick 6.8.5-5, Paperclip 3.4.2, última versión de cocaína, Rails 3.2.13:
Entré en geometry_detector_factory.rb en la gema Paperclip y comenté las 2 líneas alrededor de la llamada de identificación: (este paso no es necesario, solo explico lo que hice para determinar el problema)
#silence_stream(STDERR) do
Paperclip.run("identify", "-format ''%wx%h,%[exif:orientation]'' :file", :file => "#{path}[0]")
#end
junto con la declaración "final" correspondiente. Esto me permitió ver los errores en la línea de comandos al ejecutar el comando "identificar".
Básicamente, el error decía: "no decodificar delegado para este formato de imagen"
Probablemente pueda buscar ese error y resolverlo, pero básicamente lo que hice fue ir a usr / local / bin y ejecutar: (tampoco es necesario, a menos que desee ver lo que ha instalado)
convert -list configure
y busque la linea de DELEGADOS. Tenía otro servidor Linux en el que trabajaba ImageMagick y, después de comparar los dos, me di cuenta de que el nuevo solo tenía 2 delegados instalados. Pude correr:
yum install ImageMagick-devel
y luego recompile ImageMagick con make, make install y funcionó.
También puede encontrar los delegados manualmente en el sitio de ImageMagick e instalarlos uno por uno, pero esa biblioteca prácticamente lo cubrió para mí.
¿Depurando ImageMagick? ¡Nadie tiene tiempo para eso!
Tuve un problema similar, pero más viejo PaperClip (3.0.2).
En mi caso lo arreglé con:
gem ''cocaine'', ''0.3.2''
Ya mencionaste que intentaste actualizar ImageMagick, pero tuve el mismo problema y actualizar a ImageMagick 6.8.0-10 2013-03-03
solucioné.