13
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Heroku環境でnatto/mecab gemを使えるようにする

Last updated at Posted at 2020-06-12

目的

Heroku環境にはmecabがインストールされていないので,単純にpushするとビルドで落ちる.
heroku-buildpack-mecabとか,heroku-buildpack-linuxbrewを使う方法とかいろいろあったけど,
調べてみればみるほどdeprecatedの嵐.
なんとかbuildpackでできないかと試行錯誤した結果が今回のheroku-buildpack-aptを使う方法.
heroku-buildpack-aptheroku-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がインストールされるようにする

Gemfile
gem 'mecab', '0.996'
gem 'natto'

buildpackの設定

bash
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に入る.
そこにパスを通していく

bash
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を作成する

Aptfile
mecab
libmecab-dev
mecab-ipadic
mecab-ipadic-utf8

デプロイ

デプロイする

bash
git add .
git commit -m 'commit message'
git push heroku master

結論

buildpackで頑張ったけど,Dockerでやるのが圧倒的に平和だと思う.

13
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?