3 votes

Carrierwave #Resize_to_fill ne fonctionne pas avec Minimagick (fonctionne uniquement avec rMagick)

J'ai configuré mon application rails pour utiliser Carrierwave pour les téléchargements d'images. Comme indiqué dans la documentation, j'ai inclus la version appropriée de la gemme pour les téléchargements de fichiers multiples. Dans l'uploader de Carrierwave, j'ai inclus Minimagick. Quand j'essaye d'utiliser le #resize_to_fill j'obtiens l'erreur suivante, et le téléchargement échoue :

ActiveRecord::RecordInvalid: Validation failed: Images translation missing: en.errors.messages.mini_magick_processing_error

Cependant, lorsque je passe de Minimagick à Rmagick, cela fonctionne parfaitement ? Je préférerais utiliser Minimagick si possible. Une autre chose étrange est que d'autres méthodes comme #resize_to_fit fonctionnent parfaitement avec Minimagick et Rmagick. Quelqu'un a-t-il rencontré ce problème ?

Voici les fichiers importants :

Gemfile

gem 'rails',                   '5.0.1'
gem 'bcrypt',                  '3.1.11'
gem 'faker',                   '1.6.6'
gem 'carrierwave',              github: 'carrierwaveuploader/carrierwave'
gem 'mini_magick',             '4.5.1'
# gem 'rmagick',              '~> 2.15', '>= 2.15.4'
gem 'fog',                     '1.38.0'
gem 'will_paginate',           '3.1.0'
gem 'bootstrap-will_paginate', '0.0.10'
gem 'bootstrap',            '~> 4.0.0.alpha6'

source 'https://rails-assets.org' do
  gem 'rails-assets-tether', '>= 1.3.3'
end

gem 'puma',                    '3.4.0'
gem 'pg',   '0.18.4'
gem 'sass-rails',              '5.0.6'
gem 'uglifier',                '3.0.0'
gem 'coffee-rails',            '4.2.1'
gem 'jquery-rails',            '4.1.1'
gem 'turbolinks',              '5.0.1'
gem 'jbuilder',                '2.4.1'

group :development, :test do
  gem 'byebug',  '9.0.0', platform: :mri
end

group :development do
  gem 'web-console',           '3.1.1'
  gem 'listen',                '3.0.8'
  gem 'spring',                '1.7.2'
  gem 'spring-watcher-listen', '2.0.0'
end

group :test do
  gem 'rails-controller-testing', '0.1.1'
  gem 'minitest-reporters',       '1.1.9'
  gem 'guard',                    '2.13.0'
  gem 'guard-minitest',           '2.4.4'
end

uploaders/images_uploader.rb

class ImagesUploader < CarrierWave::Uploader::Base
  # Include RMagick or MiniMagick support:

  # include CarrierWave::RMagick (only this one works)
  include CarrierWave::MiniMagick

  process resize_to_fill: [900, 600]

  if Rails.env.production?
    storage :fog
  else
    storage :file
  end

  def store_dir
    "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
  end

  def extension_white_list
    %w(jpg jpeg gif png)
  end
end

Minimagick et Rmagick devraient tous deux supporter #resize_to_fill selon la documentation et les nombreux exemples que j'ai vus en ligne. J'ai également essayé d'utiliser différentes versions de Carrierwave et Minimagick mais rien n'a fonctionné. J'ai également essayé de réinstaller Imagemagick. Toujours rien.

Quelqu'un peut-il m'aider ? De plus, si je ne peux pas faire fonctionner Minimagick, est-ce que Rmagick est vraiment si mauvais à utiliser ? D'après ce que j'ai vu, les gens sont vraiment contre. Merci.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X