diff --git a/lib/carrierwave/processing/rmagick.rb b/lib/carrierwave/processing/rmagick.rb index 773f74ddf..8dd442924 100644 --- a/lib/carrierwave/processing/rmagick.rb +++ b/lib/carrierwave/processing/rmagick.rb @@ -385,7 +385,7 @@ def dimension_from(value) end def rmagick_image - ::Magick::Image.read(current_path).first + ::Magick::Image.from_blob(self.read).first end end # RMagick diff --git a/spec/processing/rmagick_spec.rb b/spec/processing/rmagick_spec.rb index 4f6515f5c..e0dbe162a 100644 --- a/spec/processing/rmagick_spec.rb +++ b/spec/processing/rmagick_spec.rb @@ -246,6 +246,38 @@ end end + describe "#rmagick_image" do + it "returns a ::Magick::Image" do + expect{instance.send(:rmagick_image)}.to_not raise_exception + expect(instance.send(:rmagick_image).class).to eq(::Magick::Image) + end + + context "with a remotely stored file" do + class RemoteFile < CarrierWave::SanitizedFile + def initialize local_path + @local_path = local_path + end + + def current_path + "foo/bar.jpg" + end + + def read + File.read @local_path + end + end + + before do + allow(instance).to receive(:file).and_return(RemoteFile.new(landscape_file_copy_path)) + end + + it "returns a ::Magick::Image" do + expect{instance.send(:rmagick_image)}.to_not raise_exception + expect(instance.send(:rmagick_image).class).to eq(::Magick::Image) + end + end + end + describe "test errors" do context "invalid image file" do before do