5
2

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 5 years have passed since last update.

Docker, Heroku環境にqiita-markdownを導入する

Last updated at Posted at 2018-12-20

はじめに

本記事はqiita-markdownを含んだGemfileをHerokuにpushするにはherokuでqiita-markdownを使う方法を参考にしています。
それをもう少し噛み砕いて、かつ内容が多少古くなっているため2018年12月21日現在まで、私が動作確認のとれた方法を書き記したいと思います。

qiita-markdownを導入するまでの基礎知識

qiita-markdownはcharlock_holmesruggedのふたつのgemに依存しています(正確にはgithub-linguistというgemもありますがこちらはGemfileに普通に書けばいいので特に問題はありません)。
そのためこのふたつのgemを同時に導入する必要があるのですが、Herokuは多少の知識が必要です。重い内容ではありませんが、初めてHerokuをいじる、もしくは軽く程度の方には多少荷が重いと思うのでもう少し分かりやすくまとめたいと思います。

具体的にはcharlock_holmesはlibicuが、ruggedはcmakeという外部のツールをインストールする必要があります。これをHerokuとついでにDocker(特に公式のRubyイメージは利用している方が多いハズ)にいれる部分を記します。

Docker

公式のRubyイメージからのビルドを想定しています。
以下Dockerfile

Docker

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 と呼ばれるものをアプリのルートで作成することによって、そこに必要なツールをインストールすることができます。

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!

参考

5
2
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
5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?