Skip to content

Commit

Permalink
Upgrade minimagick 5 (#132)
Browse files Browse the repository at this point in the history
* Add gemfiles for multi-gem version testing

* Permit mini_magic v5 in gemspec

* Support valid image check for minimagic5

* Use a shim to simplify support for minimagick 4 and 5
  • Loading branch information
lukeasrodgers authored Feb 10, 2025
1 parent 8490530 commit ba30289
Show file tree
Hide file tree
Showing 6 changed files with 32 additions and 9 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
Gemfile.lock
gemfiles/*.lock
pkg/
.DS_Store
7 changes: 7 additions & 0 deletions gemfiles/mini_magick4.gemfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
source 'https://rubygems.org'

gemspec :path => '../'

gem 'pry'

gem 'mini_magick', '~> 4.9'
7 changes: 7 additions & 0 deletions gemfiles/mini_magick5.gemfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
source 'https://rubygems.org'

gemspec :path => '../'

gem 'pry'

gem 'mini_magick', '~> 5.0'
2 changes: 1 addition & 1 deletion image_processing.gemspec
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ Gem::Specification.new do |spec|
spec.metadata = { "changelog_uri" => spec.homepage + "/blob/master/CHANGELOG.md",
"rubygems_mfa_required" => "true" }

spec.add_dependency "mini_magick", ">= 4.9.5", "< 5"
spec.add_dependency "mini_magick", ">= 4.9.5", "< 6"
spec.add_dependency "ruby-vips", ">= 2.0.17", "< 3"

spec.add_development_dependency "rake"
Expand Down
12 changes: 10 additions & 2 deletions lib/image_processing/mini_magick.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,17 @@ module ImageProcessing
module MiniMagick
extend Chainable

def self.convert_shim(&block)
if ::MiniMagick.respond_to?(:convert)
::MiniMagick.convert(&block)
else
::MiniMagick::Tool::Convert.new(&block)
end
end

# Returns whether the given image file is processable.
def self.valid_image?(file)
::MiniMagick::Tool::Convert.new do |convert|
convert_shim do |convert|
convert << file.path
convert << "null:"
end
Expand All @@ -30,7 +38,7 @@ def self.load_image(path_or_magick, loader: nil, page: nil, geometry: nil, auto_
magick = path_or_magick
else
source_path = path_or_magick
magick = ::MiniMagick::Tool::Convert.new
magick = ::ImageProcessing::MiniMagick.convert_shim

Utils.apply_options(magick, **options)

Expand Down
12 changes: 6 additions & 6 deletions test/mini_magick_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
it "applies imagemagick operations" do
actual = ImageProcessing::MiniMagick.flip.call(@portrait)
expected = Tempfile.new(["result", ".jpg"], binmode: true).tap do |tempfile|
MiniMagick::Tool::Convert.new do |cmd|
ImageProcessing::MiniMagick.convert_shim do |cmd|
cmd << @portrait.path
cmd.flip
cmd << tempfile.path
Expand All @@ -37,7 +37,7 @@
it "applies macro operations" do
actual = ImageProcessing::MiniMagick.resize_to_limit(400, 400).call(@portrait)
expected = Tempfile.new(["result", ".jpg"], binmode: true).tap do |tempfile|
MiniMagick::Tool::Convert.new do |cmd|
ImageProcessing::MiniMagick.convert_shim do |cmd|
cmd << @portrait.path
cmd.resize("400x400")
cmd << tempfile.path
Expand All @@ -55,7 +55,7 @@

it "accepts page" do
tiff = Tempfile.new(["file", ".tiff"])
MiniMagick::Tool::Convert.new do |convert|
ImageProcessing::MiniMagick.convert_shim do |convert|
convert.merge! [@portrait.path, @portrait.path, @portrait.path]
convert << tiff.path
end
Expand All @@ -70,7 +70,7 @@

it "disallows split layers by default" do
tiff = Tempfile.new(["file", ".tiff"])
MiniMagick::Tool::Convert.new do |convert|
ImageProcessing::MiniMagick.convert_shim do |convert|
convert.merge! [@portrait.path, @portrait.path, @portrait.path]
convert << tiff.path
end
Expand Down Expand Up @@ -168,7 +168,7 @@
end

it "accepts magick object as source" do
magick = MiniMagick::Tool::Convert.new
magick = ImageProcessing::MiniMagick.convert_shim
magick << fixture_image("rotated.jpg").path
result = ImageProcessing::MiniMagick.source(magick).call
assert_dimensions [600, 800], result
Expand Down Expand Up @@ -568,7 +568,7 @@
it "appends CLI arguments" do
actual = ImageProcessing::MiniMagick.append("-resize", "400x400").call(@portrait)
expected = Tempfile.new(["result", ".jpg"], binmode: true).tap do |tempfile|
MiniMagick::Tool::Convert.new do |cmd|
ImageProcessing::MiniMagick.convert_shim do |cmd|
cmd << @portrait.path
cmd.resize("400x400")
cmd << tempfile.path
Expand Down

0 comments on commit ba30289

Please sign in to comment.