Je me frappe la tête contre cela depuis plusieurs jours. Récemment, mon téléchargeur d'images a cessé de fonctionner correctement. J'ai étudié plusieurs possibilités, mais aucune des solutions suggérées n'a fonctionné dans mon cas.
Le message d'erreur est:
#<Paperclip::Errors::NotIdentifiedByImageMagickError:Paperclip::Errors::NotIdentifiedByImageMagickError>
Voici les détails:
development.rb
contient le chemin approprié (et j'ai vérifié qu'il est correct en utilisant which identify
)
Paperclip.options[:command_path] = "/usr/local/bin/"
Gemfile.lock
(partie pertinente)
Paperclip (3.4.1)
activemodel (>= 3.0.0)
activerecord (>= 3.0.0)
activesupport (>= 3.0.0)
cocaine (~> 0.5.0)
MODEL (Je met à jour un objet de la classe, mais l'image réside dans le modèle d'emplacement. (Classroom has_one :location, :as => :locatable)
Modèle 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
Contrôleur 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
Ce que j'ai essayé.
J'ai essayé des variantes de versions de pierres précieuses, notamment
# 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 je supprime la mise à l'échelle,
:styles => {:show => "1200x500#", :medium => "300x300#", :thumb => "100x100>"},
:convert_options => {:show => "-gravity center"}
le téléchargement fonctionne, mais j'ai un peu besoin de la mise à l'échelle ;-)
Quelqu'un peut-il voir quelque chose qui me manque?
Je viens de résoudre ce problème. Brew effectue un appel d’annuaire Cellar, /usr/local/Cellar[.____. VERIFIE si tu n’as pas deux ImageMagick, j’en ai un nommé ImageMagick-Ruby182, alors vous l'avez lancé pour désinstaller ImageMagick-Ruby182, ainsi que pour imagemagick normal, et réinstallez Image Magic.
Nous venons de rencontrer ce problème et il s’est avéré qu’il n’y avait pas de ghostscript installé. J'ai suivi les conseils de Scott Cornwell et supprimé le silence des erreurs, puis déterminé que la conversion échouait car ghostscript n'était pas disponible.
brew install ghostscript
Correction du problème pour nous.
J'ai eu le même problème, même si mon serveur est sous Linux. Je ne peux pas vous dire exactement comment faire parce que je n'ai pas de Mac à tester, mais j'espère que cela vous oriente dans la bonne direction.
Cela a fonctionné pour moi avec ImageMagick 6.8.5-5, Paperclip 3.4.2, dernière version de cocaïne, Rails 3.2.13:
Je suis allé dans geometry_detector_factory.rb dans la gemme du trombone et j'ai commenté les 2 lignes entourant l'appel d'identification: (cette étape n'est pas nécessaire, il suffit d'expliquer ce que j'ai fait pour déterminer le problème)
#silence_stream(STDERR) do
Paperclip.run("identify", "-format '%wx%h,%[exif:orientation]' :file", :file => "#{path}[0]")
#end
avec la déclaration "end" correspondante. Cela m'a permis de voir les erreurs sur la ligne de commande lors de l'exécution de la commande "identifier".
En gros, l'erreur disait: "pas de délégué de décodage pour ce format d'image"
Vous pouvez probablement rechercher cette erreur et la résoudre, mais ce que j'ai fait est essentiellement d'aller dans usr/local/bin et d'exécuter: (également inutile, sauf si vous souhaitez voir ce que vous avez installé)
convert -list configure
et cherchez la ligne DELEGATES. J'avais un autre serveur Linux sur lequel ImageMagick travaillait et après avoir comparé les deux, je me suis rendu compte que le nouveau n'avait que 2 délégués installés. J'ai pu courir:
yum install ImageMagick-devel
puis recompilez ImageMagick avec make, make install et cela a fonctionné.
Vous pouvez également trouver les délégués manuellement sur le site ImageMagick et les installer un par un, mais cette bibliothèque l’a assez bien couverte pour moi.
Débogage d'ImageMagick? Personne n'a le temps pour ça!
Avait le problème sur mon environnement de développement de fenêtre, en utilisant Paperclip 3.5.2, cocaïne 0.5.3 et ImageMagic 6.8.8.
La solution était d'ajouter:
Paperclip.options[:command_path] = 'C:\Program Files\ImageMagick-6.8.8-Q16'
à config/environment/development.rb
J'ai eu le même problème, mais plus vieux Paperclip (3.0.2).
Dans mon cas je l'ai corrigé avec:
gem 'cocaine', '0.3.2'
Réinstaller libtool brew install libtool
a fonctionné pour moi.
Juste pour info:
brew uninstall libtool
brew install libtool
brew uninstall jpeg
brew install jpeg
brew link --overwrite jpeg
brew unlink freetype && brew link freetype
Nous avions le même problème avec image_magic qui cassait notre fonctionnalité Paperclip en production, mais pas en développement (bizarre, je sais). trucs), puis de retour à la production sur heroku, l’erreur persiste en production! (bizarre, je sais).
Ce qui a fini par faire le tour était en cours d'exécution:
$ heroku repo:purge_cache -a myAppName
(Extrait de: https://github.com/heroku/heroku-repo#purge_cache )
Lorsque vous déployez votre application, Heroku met en cache des éléments tels que vos ressources et les gemmes installées afin d'accélérer le déploiement. Même s'il s'agit d'une fonctionnalité intéressante, elle peut parfois avoir des effets secondaires et, dans ce cas, que quelque chose à propos de la gemme imagemagick soit "bloqué" dans le cache de production, c'est pourquoi la purge a résolu le problème pour nous (car après la purge, votre application se reconstruira à partir de zéro lors de votre prochain déploiement)
J'ai le même problème et je l'ai résolu lorsque j'ai configuré les liaisons d'exécution de l'éditeur de liens dynamiques pour créer les liens nécessaires et mettre en cache les bibliothèques partagées les plus récentes à l'aide de la commande ldconfig .
Vous devez donc utiliser la commande suivante:
Sudo ldconfig /usr/local/lib
En fait, je conseille de réinstaller imagemagick en suivant les étapes de comment-installer-image-magick-and-setup-Paperclip .
Vous avez déjà mentionné que vous aviez essayé de mettre à niveau ImageMagick, mais j'avais le même problème et la mise à niveau vers ImageMagick 6.8.0-10 2013-03-03
l'a corrigé pour moi.
Veuillez mettre à jour la version de Paperclip gem et cocaïne. Set Version trombone: 3.4.1 Set Version cocaïne: 0.5.
J'ai rencontré le même problème et mon problème était déjà présent dans Paperclip gem github