heroku-buildpack-imagemagickの使い方

Twitter bot に画像処理を加えたいと思って Ruby MiniMagick gem を使いました。
で、デプロイしたあとに気付きました。
あ、ImageMagick を使えるように設定してない!
大急ぎでやり方を探して処理しました。

heroku-buildpack-imagemagick

とはいえ簡単な処理なのです。 heroku に buildpack を追加するだけ。

ImageMagick

ImageMagickのビルドパックは公式からは提供されていませんが、カスタムビルドパックを作ってる人がいるのでこれを利用します。

$ heroku buildpacks:add https://github.com/ello/heroku-buildpack-imagemagick

これでImageMagickのカスタムビルドパックの追加が完了です。
HerokuでImageMagickのconvertができるまで - Qiita

これですね。
ello/heroku-buildpack-imagemagick

実行

$ heroku buildpacks:add https://github.com/ello/heroku-buildpack-imagemagick
Buildpack added. Next release on twitter-bot will use:
  1. heroku/ruby
  2. https://github.com/ello/heroku-buildpack-imagemagick
Run git push heroku master to create a new release using these buildpacks.

空コミットする必要があります。

$ git commit -m "add heroku-buildpack-imagemagick" --allow-empty
[master 69186ad] add heroku-buildpack-imagemagick

ではデプロイしましょう。

$ git push heroku master
Counting objects: 1, done.
Writing objects: 100% (1/1), 196 bytes | 196.00 KiB/s, done.
Total 1 (delta 0), reused 0 (delta 0)
remote: Compressing source files... done.
remote: Building source:
remote: 
remote: -----> Ruby app detected
remote: -----> Compiling Ruby
 :
remote: -----> Detecting rake tasks
remote: 
remote: -----> ImageMagick app detected
remote: -----> Install ImageMagick
remote: -----> Downloading ImageMagick from http://www.imagemagick.org/download/releases/ImageMagick-6.9.5-10.tar.xz
remote: --2018-02-15 13:47:21--  http://www.imagemagick.org/download/releases/ImageMagick-6.9.5-10.tar.xz
remote: Resolving www.imagemagick.org (www.imagemagick.org)... 198.72.81.86
remote: Connecting to www.imagemagick.org (www.imagemagick.org)|198.72.81.86|:80... connected.
remote: HTTP request sent, awaiting response... 200 OK
remote: Length: 8794440 (8.4M) [application/x-xz]
remote: Saving to: ‘/tmp/build_e7e5db58f15dc697460ae578ff813215/ImageMagick-6.9.5-10.tar.xz’
 :
remote: -----> Extracting ImageMagick from /tmp/build_e7e5db58f15dc697460ae578ff813215/ImageMagick-6.9.5-10.tar.xz
 :
remote: -----> Building ImageMagick
 :
remote: -----> Caching ImageMagick installation
remote: -----> Writing policy file
remote: -----> Updating environment variables
remote: -----> Discovering process types
remote:        Procfile declares types -> bot
remote: 
remote: -----> Compressing...
remote:        Done: 56.2M
remote: -----> Launching...
remote:        Released v31
remote:        https://twitter-bot.herokuapp.com/ deployed to Heroku
remote: 
remote: Verifying deploy... done.
To https://git.heroku.com/twitter-bot.git
   75f8ab8..69186ad  master -> master
[https://gist.github.com/riocampos/2e758f3d359796b93ff19356d6f76f08:title=heroku log after `heroku buildpacks:add https://github.com/ello/heroku-buildpack-imagemagick`]

ImageMagick のビルドに6分ぐらいかかった。

動くか確認

先ほどの Qiita 記事に従って、動くかどうかを確認してみましょう。

$ heroku run magick -version
Running magick -version on ⬢ colbase-bot... up, run.2716 (Free)
bash: magick: command not found

あれ?
でも ImageMagick ってだいたいは convert コマンドを使うよね?

$ heroku run convert -version
Running convert -version on ⬢ colbase-bot... up, run.2202 (Free)
Version: ImageMagick 6.9.5-10 Q16 x86_64 2018-02-15 http://www.imagemagick.org
Copyright: Copyright (C) 1999-2016 ImageMagick Studio LLC
License: http://www.imagemagick.org/script/license.php
Features: Cipher DPC OpenMP 
Delegates (built-in): bzlib djvu fontconfig freetype jbig jng jpeg lcms lqr lzma openexr png tiff wmf x xml zlib

動いた動いた^_^