railsで画像アップロード機能を作ったとき、
「クソッ、画像が回転してしまう!!!」
という場面にぶち当たる方、多くいらっしゃると思います。
そこで軽くググって、
「RMagickを導入すればいいのか!!!」
↓
「gem "rmagick"」、bundle install
↓
なにかしらのエラーが発生。
「できねえじゃねえか!!!」
というのを経験した方に読んでいただければといいと思います。
バージョン、前提条件
Ruby 2.6.5
Ruby on Rails 6.0.2.1
CentOS 8
なお、画像アップロードにはActiveStorageは使わず、carrierwaveを使っています。(carrierwaveの説明はここではしません。)
余談ですが、carrierwaveではなくActiveStorageを使うメリットってなんですかね...
もしもActiveStorage絶対使うマンの方いらっしゃれば教えてください。。。
CentOS8にImageMagickをダウンロード
1. 開発ツール・その他必要なパッケージを入れます。
$ sudo dnf groupinstall 'Development Tools'
$ sudo dnf install bzip2-devel freetype-devel libjpeg-devel libpng-devel libtiff-devel giflib zlib-devel ghostscript libwmf libtool-ltdl-devel libX11-devel libXext-devel libXt-devel libxml2-devel librsvg2-devel
2. wgetでソースをインストール
$ wget https://www.imagemagick.org/download/ImageMagick.tar.gz
3. ソースの解凍
$ tar xvfz ImageMagick.tar.gz
4.コンパイル
$ cd ImageMagick-7.0.10-12/
$ ./configure
$ make
$ sudo make install
5.パスの設定
$ echo 'export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig' >> ~/.bash_profile
$ echo 'export LD_LIBRARY_PATH=/usr/local/lib' >> ~/.bash_profile
$ source .bash_profile
#Gemに追加
gem "rmagick"
$ bundle install
こんだけです。
#追記: rails g taskでエラーがでたため、MiniMagickに鞍替え
rails g taskで以下のエラーが出た。
/home/user/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/bootsnap-
1.4.6/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in
`require': libMagickCore-7.Q16HDRI.so.7: cannot open shared object file: No such file or directory -
/home/user/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/rmagick-4.1.0/lib/RMagick2.so (LoadError)
...は?ちょっと分からなかったため、MiniMagickを使うことに。(スミマセン、もうちょっと調べてきます。。。)
# gem "rmagick"
gem "minimagick"
また、uploader(ここは解説なし)も変更
# include CarrierWave::RMagick
include CarrierWave::MiniMagick
##参考
https://www.rootlinks.net/2019/11/08/install-imagemagick-on-centos-8/
https://qiita.com/tajihiro/items/3f10c59f19fcd0a9e660
https://news.mynavi.jp/article/20190222-775521/