MiniMagick
RubyでImageMagickを使うためのgem
https://github.com/minimagick/minimagick
heroku-buildpack-imagemagickの関連で、どうやってバイナリを探索しているか調べた
MiniMagick::Utilities.whichでやっている
https://github.com/minimagick/minimagick/blob/v4.12.0/lib/mini_magick/utilities.rb#L15
やっていることは環境変数PATHを順番に見ているだけ
ということで、より優先順位の高いPATHを追加すれば、任意のパスにあるImageMagickを参照してくれる
code:bash
# aptで入れたImageMagickは/usr/binに入っている
$ which convert
/usr/bin/convert
# MiniMagick::Utilities.whichで/usr/bin/convertが出る
2 pry(main)> MiniMagick::Utilities.which('convert')
=> "/usr/bin/convert"
# ImageMagickをビルドして/usr/localにインストールした後
$ echo $PATH
/usr/local/bundle/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
$ which convert
/usr/local/bin/convert
$ convert --version
Version: ImageMagick 6.9.12-77 Q16 aarch64 17704 https://legacy.imagemagick.org
Copyright: (C) 1999 ImageMagick Studio LLC
License: https://imagemagick.org/script/license.php
Features: Cipher DPC OpenMP(4.5)
Delegates (built-in): bzlib djvu fontconfig freetype jbig jng jp2 jpeg lcms lqr lzma openexr png tiff webp x xml zlib
# /usr/local/bin/convertが使われる
2 pry(main)> MiniMagick::Utilities.which('convert')
=> "/usr/local/bin/convert"
3 pry(main)> puts MiniMagick::Tool::Convert.new {|c| c.version}
Version: ImageMagick 6.9.12-77 Q16 aarch64 17704 https://legacy.imagemagick.org
Copyright: (C) 1999 ImageMagick Studio LLC
License: https://imagemagick.org/script/license.php
Features: Cipher DPC OpenMP(4.5)
Delegates (built-in): bzlib djvu fontconfig freetype jbig jng jp2 jpeg lcms lqr lzma openexr png tiff webp x xml zlib