事象
- Rails(6.0.0)
- Heroku
- Heroku Buildpacksにmecab(https://github.com/diasks2/heroku-buildpack-mecab.git)を追加
この条件で、Herokuでデプロイを行った場合、エラーが発生するケースがあると思います。
調査
デプロイエラーの内容は下記のようです。
! To update to the latest version installed on your system, run `bundle update --bundler`.
! To install the missing version, run `gem install bundler:2.0.2`
確かに、Gemfile.lockに下記のようにbundlerのバージョン指定をしています。
BUNDLED WITH
2.0.2
そこで、Gemfile.lockのBUNDLED WITH指定を手作業で削除し、再度Herokuでデプロイします。
⇒正常にデプロイ完了します。
しかし、Heroku Buildpacksからmecabを外し、BUNDLED WITH 2.0.2指定を復活させ、再度Herokuでデプロイしてみたところ…
⇒正常にデプロイ完了します。解せません。
つまり、下記のような状態です。
- | mecabあり | mecabなし |
---|---|---|
BUNDLED WITH 2.0.2 | デプロイNG | デプロイOK |
BUNDLED WITH なし | デプロイOK | デプロイOK |
mecabとbundler v2.0.2は相性が悪いように読み取れます。
根本解決になっておらず恐縮ですが、
Rails+mecab+Herokuという(マニアックな)組み合わせでアプリケーションを作りたい場合、この事象に遭遇した際は、
手作業でGemfile.lockのBUNDLED WITH指定を削除すると、この事象を突破できると思います。
備忘
Config versにMECAB_PATH=/app/vendor/mecab/lib/libmecab.so
の設定をお忘れなく!