目的
Heroku環境にはmecabがインストールされていないので,単純にpushするとビルドで落ちる.
heroku-buildpack-mecab
とか,heroku-buildpack-linuxbrew
を使う方法とかいろいろあったけど,
調べてみればみるほどdeprecatedの嵐.
なんとかbuildpackでできないかと試行錯誤した結果が今回のheroku-buildpack-apt
を使う方法.
heroku-buildpack-apt
とheroku-buildpack-ruby
を使って環境を構築した方法を記録.
対象
- Heroku上のRails/Sinatra環境でgem natto/mecabを使いたい人
- Dockerには詳しくなくて,Dockerを使わない方法で上の環境を揃えたい人
heroku-buildpack-apt
- heroku-buildpack-apt
- Herokuチームから公開されているものの,下の
heroku-buildpack-ruby
のようなOfficial Supported Buildpackではなく,サポート対象外のbuildpack - ubuntu環境ではあるものの,ファイルシステムがロックされてるので,パッケージインストールとかはできない.そこで登場するのがこいつ.
- レポジトリのルートに
Aptfile
というファイルを作り,インストールしたいパッケージのリストを書く
heroku-buildpack-ruby
- heroku-buildpack-ruby
- HerokuのOfficial Supported Buildpack
- Ruby, Rack, Sinatra, Railsアプリケーションを走らせる環境をHerokuに作れるやつ
- Ruby製のアプリケーションをpushしたときに自動で使用されるのがこれ
手順
Gemfile
Gemfileで以下のgemがインストールされるようにする
gem 'mecab', '0.996'
gem 'natto'
buildpackの設定
heroku buildpacks:add --index 1 https://github.com/heroku/heroku-buildpack-apt
heroku buildpacks:add --index 2 heroku/ruby
これで,この二つのbuildpackを使った環境ができる
参考
環境変数の設定
buildpack経由で/app/.apt/usr/lib/x86_64-linux-gnu
配下にインストールされる.
mecabrcは/app/.apt/etc/mecabrc
に入る.
そこにパスを通していく
heroku config:set MECABRC=/app/.apt/etc/mecabrc
heroku config:set MECABRC=/app/.apt/etc/mecabrc
heroku config:set MECAB_PATH=/app/.apt/usr/lib/x86_64-linux-gnu/libmecab.so
Aptfileの作成
heroku-buildpack-apt
にインストールしてもらいたいパッケージを書いていく.
レポジトリのルートにAptfile
を作成する
mecab
libmecab-dev
mecab-ipadic
mecab-ipadic-utf8
デプロイ
デプロイする
git add .
git commit -m 'commit message'
git push heroku master
結論
buildpackで頑張ったけど,Dockerでやるのが圧倒的に平和だと思う.