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.