Ruby on rails 如何规范CarrierWave MiniMagick操作

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

在CarrierWave上传器上为我的“auto_orient”实现编写RSpec测试时遇到问题。我也没有在网上找到太多的爱

我知道操纵方法将由gem指定,但我只是想验证我的ImageUploader是否使用RSpec正确实现它

    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.