

[類似の質問](https://ja.stackoverflow.com/questions/40200/heroku%E3%81%ABmecab%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%A7%E3%81%8D%E3%81%AA%E3%81%84)がありましたが、回答がありませんでしたので質問させていただきます。

タイトルの通り、MeCabを用いたSinatraアプリをHerokuにデプロイしようとしています。

# 環境

ローカルPC：Mac OSX

[code]

    $heroku -v
    heroku/7.6.0 darwin-x64 node-v10.6.0 # homebrewで入れました
    
    $ruby -v
    ruby 2.4.0p0 (2016-12-24 revision 57164) [x86_64-darwin16]
    
    $gem list | grep sinatra
    sinatra (2.0.3, 2.0.2)
    
    $mecab -v
    mecab of 0.996 # homebrewで入れました
    
[/code]

herokuのOS:Ubuntu

[code]

    $heroku run bash
    $ cat /etc/lsb-release 
    DISTRIB_ID=Ubuntu
    DISTRIB_RELEASE=16.04
    DISTRIB_CODENAME=xenial
    DISTRIB_DESCRIPTION="Ubuntu 16.04.4 LTS"
    
[/code]

# 私のGemfile

[code]

    source "https://rubygems.org"
    gem "sinatra"
    gem "sinatra-contrib"
    gem "mecab", "0.996"
    gem "natto"
    gem "pry"
    
[/code]

# heroku buildpacks

[code]

    $heroku buildpacks
    === mecab-on-sinatra Buildpack URLs
    1. https://github.com/heroku/heroku-buildpack-ruby.git
    2. https://github.com/diasks2/heroku-buildpack-mecab.git
    
[/code]

# エラー

[code]

    extconf.rb:12:in ``': No such file or directory - mecab-config (Errno::ENOENT)
        from extconf.rb:12:in `<main>'
    An error occurred while installing mecab (0.996), and Bundler cannot continue.
    Make sure that `gem install mecab -v '0.996'` succeeds before bundling.
    
       In Gemfile:
         mecab
    
[/code]

# 試したこと

[code]

    $ heroku run bash
    
[/code]

でherokuのbashに入って`gem install mecab -v '0.996'`しようとしたところパーミッションがなく、  
sudoをつけたらsudoコマンドがnot foundでした…。

どうすればこれらを解決してアプリをデプロイできるでしょうか。ご教示ください。


CC BY-SA 4.0
2018-07-15T07:34:21.940
46625
2018-07-19T21:40:57.863
29320
question
ruby ubuntu heroku mecab sinatra
MeCabを用いたSinatraアプリをHerokuにデプロイする方法をご教示ください。


長文失礼します。

質問者さんの環境とは異なりますが、以下の組み合わせが最小構成だと思われれます。ご参考になれば。

## ファイル構成

[code]

    mecab_on_heroku   // 任意のディレクトリ名
      ├── .gitignore
      ├── Gemfile
      ├── Gemfile.lock
      ├── Procfile
      └── app.rb
    
[/code]

### .gitignore

[code]

    /vendor
    
[/code]

### Gemfile

[code]

    ruby "2.3.7"
    source 'https://rubygems.org'
    gem 'sinatra'
    gem 'mecab', '0.996'
    
[/code]

### Procfile

[code]

    web: ruby app.rb
    
[/code]

### app.rb

[code]

    require 'sinatra'
    require 'mecab'
    
    get '/' do
      str = "我々宇宙人は地球を侵略しに来ました。"
      tagger = MeCab::Tagger.new
      "#{tagger.parse(str)}"
    end
    
[/code]

Gemfile.lock は Gemfile を保存してから以下のコマンドを実行すると作成されます。

### Gemfile.lock 生成のためのコマンド実行

[code]

    $ bundle install --path vendor/bundle
    
[/code]

## heroku のデプロイ

[code]

    $ cd mecab_on_heroku  # 任意の作業ディレクトリ
    $ heroku create -a heroku_app_name --buildpack \
        https://github.com/diasks2/heroku-buildpack-mecab.git
    $ heroku config:set LD_LIBRARY_PATH=/app/vendor/mecab/lib
    
[/code]

上記 5つのファイルを作成したのち、下記のコマンドを実行してデプロイします。

[code]

    $ git add .
    $ git commit -m "first commit."
    $ git push heroku master
    
[/code]

## 動作確認

以下のコマンドを実行すると、自動でデフォルトブラウザが開いて Sinatra アプリにアクセスします。

[code]

    $ heroku open
    
[/code]

[heroku](/questions/tagged/heroku "'heroku' のタグが付いた質問を表示")
[sinatra](/questions/tagged/sinatra "'sinatra' のタグが付いた質問を表示")
[ruby](/questions/tagged/ruby "'ruby' のタグが付いた質問を表示")
[mecab](/questions/tagged/mecab "'mecab' のタグが付いた質問を表示")


CC BY-SA 4.0
2018-07-19T14:31:12.660
46733
2018-07-19T21:40:57.863
2018-07-19T21:40:57.863
29378
29378
46625
answer