2017-03-27 2 views
0

Ich habe ein Modell mit einem angehängten Video. Ich möchte eine skalierte Version des Videos zusammen mit einer Reihe von Miniaturansichten erstellen. Ich habe folgendes Setup:Validierung fehlgeschlagen: Video Büroklammer :: Fehler :: NotIdentifiedByImageMagickError

has_attached_file :video, 
    styles: { 
     original: { format: 'mp4', processors: [:transcoder] }, 
     large: { geometry: "720x720", format: 'jpg', processors: [:thumbnail] }, 
     medium: { geometry: "540x540", format: 'jpg', processors: [:thumbnail] }, 
     thumb: { geometry: "180x180", format: 'jpg', processors: [:thumbnail] } 
    }, 
    default_url: "" 

Wenn ich dies in meiner Entwicklungsumgebung testen, funktioniert es perfekt. Das Video und alle Bilder sind richtig groß. Wenn ich jedoch nach Heroku stelle, erhalte ich die folgende Fehlermeldung:

Validation failed: Video Paperclip::Errors::NotIdentifiedByImageMagickError 
/app/vendor/bundle/ruby/2.3.0/gems/activerecord-5.0.2/lib/active_record/validations.rb:78:in `raise_validation_error' 
/app/vendor/bundle/ruby/2.3.0/gems/activerecord-5.0.2/lib/active_record/validations.rb:50:in `save!' 
/app/vendor/bundle/ruby/2.3.0/gems/activerecord-5.0.2/lib/active_record/attribute_methods/dirty.rb:30:in `save!' 
/app/vendor/bundle/ruby/2.3.0/gems/activerecord-5.0.2/lib/active_record/transactions.rb:324:in `block in save!' 
/app/vendor/bundle/ruby/2.3.0/gems/activerecord-5.0.2/lib/active_record/transactions.rb:395:in `block in with_transaction_returning_status' 
/app/vendor/bundle/ruby/2.3.0/gems/activerecord-5.0.2/lib/active_record/connection_adapters/abstract/database_statements.rb:232:in `block in transaction' 
/app/vendor/bundle/ruby/2.3.0/gems/activerecord-5.0.2/lib/active_record/connection_adapters/abstract/transaction.rb:189:in `within_new_transaction' 
/app/vendor/bundle/ruby/2.3.0/gems/activerecord-5.0.2/lib/active_record/connection_adapters/abstract/database_statements.rb:232:in `transaction' 
/app/vendor/bundle/ruby/2.3.0/gems/activerecord-5.0.2/lib/active_record/transactions.rb:211:in `transaction' 
/app/vendor/bundle/ruby/2.3.0/gems/activerecord-5.0.2/lib/active_record/transactions.rb:392:in `with_transaction_returning_status' 
/app/vendor/bundle/ruby/2.3.0/gems/activerecord-5.0.2/lib/active_record/transactions.rb:324:in `save!' 
/app/vendor/bundle/ruby/2.3.0/gems/activerecord-5.0.2/lib/active_record/suppressor.rb:45:in `save!' 
/app/app/models/concerns/snapshot_methods.rb:37:in `copy_from_ziggeo!' 
/app/app/workers/snapshot_transcoder.rb:16:in `perform' 
/app/vendor/bundle/ruby/2.3.0/gems/resque-status-0.5.0/lib/resque/plugins/status.rb:161:in `safe_perform!' 
/app/vendor/bundle/ruby/2.3.0/gems/resque-status-0.5.0/lib/resque/plugins/status.rb:137:in `perform' 

Was fehlt mir hier? Ich habe nach NotIdentifiedByImageMagickError gesucht und viele andere Fragen zu diesem Thema gescannt, aber hatte keinen Erfolg bei der Behebung meines Problems.

Die meisten der Lösungen, die ich gesehen habe, beziehen sich auf Paperclip.options[:command_path] = "/usr/bin/identify" in Entwicklung. Da mein Problem nur auf der Produktion ist, habe ich versucht, dies zu Produktion Anwendung für meine Produktionsumgebung in dem richtigen Pfad Haftung verbessernde, etwa so:

Paperclip.options[:command_path] = "/app/vender/imagemagick/bin/identify" 

Dieser hatte keine Wirkung. Weder tat /app/vender/imagemagick/bin.

Antwort

0

Nach viel Kopfschütteln konnte ich dies beheben, indem ich den Cache meiner App löschte und ImageMagick neu installierte. Hier sind die Schritte, die ich gemacht habe:

  1. Installieren Sie die heroku-repo CLI und führen Sie heroku repo:purge_cache -a APP_NAME.
  2. Erstellen Sie eine leere begehen: git commit --allow-empty -m "Hope this works"
  3. erneut bereitstellen zu Heroku: git push heroku master

Erneutes Bereitstellen dauert einige Minuten, da Heroku jetzt von Grund auf alle statischen Vermögenswerte und Abhängigkeiten neu zu erstellen hat.

Von was ich verstehe, wird dieses Problem irgendwie von einer fehlerhaften zwischengespeicherten Kopie von ImageMagick verursacht. Ich werde gerne die Antwort von jedem akzeptieren, der eine fundiertere Erklärung dafür liefern kann, was dieses Problem verursacht hat. Auch wenn es für jetzt gelöst ist, bin ich nicht davon überzeugt, dass dies zu einem zufälligen Zeitpunkt in der Zukunft nicht noch einmal passieren wird.

Verwandte Themen