はじめに
本記事はqiita-markdownを含んだGemfileをHerokuにpushするにはとherokuでqiita-markdownを使う方法を参考にしています。
それをもう少し噛み砕いて、かつ内容が多少古くなっているため2018年12月21日現在まで、私が動作確認のとれた方法を書き記したいと思います。
qiita-markdownを導入するまでの基礎知識
qiita-markdownはcharlock_holmesとruggedのふたつのgemに依存しています(正確にはgithub-linguistというgemもありますがこちらはGemfileに普通に書けばいいので特に問題はありません)。
そのためこのふたつのgemを同時に導入する必要があるのですが、Herokuは多少の知識が必要です。重い内容ではありませんが、初めてHerokuをいじる、もしくは軽く程度の方には多少荷が重いと思うのでもう少し分かりやすくまとめたいと思います。
具体的にはcharlock_holmesはlibicuが、ruggedはcmakeという外部のツールをインストールする必要があります。これをHerokuとついでにDocker(特に公式のRubyイメージは利用している方が多いハズ)にいれる部分を記します。
Docker
公式のRubyイメージからのビルドを想定しています。
以下Dockerfile
FROM ruby:2.5.0
ENV LANG C.UTF-8
ENV WORKING_DIR /var/www/html
WORKDIR $WORKING_DIR
RUN apt-get update -qq && \
apt-get install -y sudo build-essential libpq-dev vim postgresql-client nodejs
# charlock_holmes, ruggedの依存ライブラリ
RUN apt-get install -y libicu-dev cmake
ADD ./Gemfile $WORKING_DIR
ADD ./Gemfile.lock $WORKING_DIR
RUN gem install bundler
RUN bundle install
よくある普通の構成だと思います。
コメントしている部分が注目すべき部分でDockerfileではapt-getよりlibicu-devとcmakeをいれてください。libicu-develをいれている方もいますが、私の環境では公式Rubyイメージでlibicu-develをいれるとcharlock_holmesはbundle installエラーとなりました。もしかたら入ったかたもいらっしゃる可能性はありますがここではこちらを推奨します。
Heroku
ここが本題です。
まずはじめにbuildpackを用意します。
buildpackはHeroku上の環境構築だと思っていただければいいと思います。
例えばRubyであったら heroku/ruby
とういうbuildpackをいれることによってRailsは動作することができるます。
このbuildpackは複数いれることができますが、順番によっては動作しない例もある(私はまだお目にかかったことはありませんが)とのことなので、気をつけてください
buildpackの追加
ではHeroku上にbuildpackを追加していきましょう。
まずはじめはcharlock_holmesを動作させるためのlibicuをいれます...が直接は無理なのでaptでとってこれるように準備します。
Herokuでは Aptfile
と呼ばれるものをアプリのルートで作成することによって、そこに必要なツールをインストールすることができます。
libicu52
libicu-devel
こちらではDockerと違いlibicu-devではエラーになったのでlibicu-develを入れてあげます。
次に、このAptfileを実行させるために必要なbuildpackを用意してあげます。これは heroku buildpacks:add
コマンドでHeroku環境に入れることができます。ただし
順番によっては動作しない例もある
ため読み込む順番を指定してあげます。オプションの --index
を使います。
最終的に打ち込むコマンドはいかになります。
heroku buildpacks:add --index 1 https://github.com/heroku/heroku-buildpack-apt
これでAptfileとbuildpackの環境が入ったのでcharlock_holmes環境はOKです。
次に、ruggedをいれるためcmakeを導入します。
こちらはbuildpackだけをaddしてあげれば良いのですが、現在のGitHubのリポジトリURLが違うため注意が必要です。以下コマンドを入力してください(またURLは変更される可能性があります。その時はggるなりすればリポジトリがでてくるはずなので注意してください)。
heroku buildpacks:add --index 2 https://github.com/customink/heroku-buildpack-cmake
最後に必要なbuildpackが入っているか調べます heroku buildpacks
コマンドを打って順番通りになっていたら成功です! 補足 最後にheroku/rubyがあるようにしてください。
あとはいつも通り git push heroku master
してあげてください。 Good Luck!