Ruby on rails 如何规范CarrierWave MiniMagick操作
在CarrierWave上传器上为我的“auto_orient”实现编写RSpec测试时遇到问题。我也没有在网上找到太多的爱 我知道操纵方法将由gem指定,但我只是想验证我的ImageUploader是否使用RSpec正确实现它Ruby on rails 如何规范CarrierWave MiniMagick操作,ruby-on-rails,rspec,carrierwave,minimagick,Ruby On Rails,Rspec,Carrierwave,Minimagick,在CarrierWave上传器上为我的“auto_orient”实现编写RSpec测试时遇到问题。我也没有在网上找到太多的爱 我知道操纵方法将由gem指定,但我只是想验证我的ImageUploader是否使用RSpec正确实现它 class ImageUploader < CarrierWave::Uploader::Base include CarrierWave::MiniMagick ... version :tile do
class ImageUploader < CarrierWave::Uploader::Base
include CarrierWave::MiniMagick
...
version :tile do
process :auto_orient
end
# Fix images being uploaded the wrong orientation
def auto_orient
manipulate! do |img|
img = img.auto_orient
end
end
let(:uploader) { ImageUploader.new(profile, :avatar) }
before do
ImageUploader.enable_processing = true
File.open(File.join(Rails.root, '/spec/support/images/logo.png')) { |f| uploader.store!(f) }
end
after do
ImageUploader.enable_processing = false
uploader.remove!
end
xit 'runs auto_orient on the image' do
# ???
end
class ImageUploader
谢谢我不是100%确定如何在MiniMagick中准确地做到这一点,但下面是我如何使用RMagick解决这个问题的,如果这有帮助的话。我认为应该采取类似的方法
uploader.cache_stored_file!
# For minimagick, you would probably use MiniMagick::Image::read
mg = ::Magick::Image::read(uploader.file.file).first
# Not sure if minimagick has an "orient" attribute, might try reading the data using something from here instead: https://github.com/probablycorey/mini_magick/blob/master/lib/mini_magick.rb#L204
expect(mg.orientation.to_i).to eq(1)
看起来不错,但在尝试读取上载程序.file.file时出现此错误:
MiniMagick::无效:标识/var/folders/69/z1zmxlt50w3\u fs9\u pb3mr0ph0000gn/T/mini\u magick20180301-54539-18z3sdj失败,错误为:标识:此图像格式没有解码委托'@error/compose.c/ReadImage/554.