技術書典の公式テンプレートと公式ビルド環境のようなものがあります
- 技術書典の共同運営元であるTechBoosterさんが提供しているRe:VIEW をビルドするdockerイメージがあります
- TechBoosterで利用しているRe:VIEWのテンプレート(B5/A5/電子書籍)もあります
これらを使わない手はない!
TechBooster編・著「技術書をかこう! 〜はじめてのRe:VIEW 〜」をビルドしてみる
そもそも、これが出来ないようでは自分の執筆環境が作成できないでしょう。 だから、ここからスタートです
- この書籍はgithubでソースコードが公開されています https://github.com/TechBooster/C89-FirstStepReVIEW-v2
- はじめて技術同人誌を書く人は、これを執筆テンプレートとして使うとよいそうです。 そういう意図で公開してくれています
- github からソースコードをダウンロードし、Re:VIEWのdockerを使い、ビルドします。
うまくいけば
C89-FirstStepReVIEW-v2.pdf
というファイルが生成されます(はずです) … うまく作れません ;_; - 正しい直し方が分かりませんが、workaroundは次のとおりです。
- 内部で使っているbundleというrubyアプリのバージョンをあげる
- review 2.3 dockerイメージの場合、
1.15.3 -> 2.2.11
に修正 - 最新の docker イメージでも 2.2.11 に修正すれば動きますね。 入っているのは bundle 2.3.17 (default は 2.1.4)と表示されますけど…?
[実行例]
% git clone https://github.com/TechBooster/C89-FirstStepReVIEW-v2
% cd C89-FirstStepReVIEW-v2
% sed -i s/1.15.3/2.2.11/ Gemfile.lock
% sh build-in-docker.sh
うまく実行されていれば、C89-FirstStepReVIEW-v2リポジトリ下に
articles/C89-FirstStepReVIEW-v2.pdf
というファイルが作成されます
リファレンス
- 技術書典のノウハウ
付録: エラーの様子
- そういうわけで、なんだかうまく作れません ;_;
- この書籍は Re:VIEW 2.3 で作成されたそうなので、 古いバージョンのdockerイメージで実行すると作れます? … つくれましぇん
- 結局dockerのはずなのにnode.jsやらrubyやらと格闘するハメになる罠です (dockerイメージのつくりかたが間違ってますよ(怒))
- このdockerイメージは作りが変です。 特定のバージョンのアプリ環境一式が封じ込められていません なぜなら起動するとインストールが始まるのです。 これでは、環境が再現されません
[ 実行例 ]
[ git clone して、そのまま build-in-docker.sh を走らせた様子 ... しょぼん ]
+ git submodule init
Submodule 'prh-rules' (https://github.com/prh/rules.git) registered for path 'prh-rules'
+ git submodule update
Cloning into '/book/prh-rules'...
Submodule path 'prh-rules': checked out 'a8f66f4e69b3d185f87d934e4115b4a3b8cf3b16'
+ rm -rf node_modules
...
+ rm -rf vendor/bundle
+ npm install --unsafe-perm
npm WARN old lockfile
... snip ...
Warning: Command failed: bundle exec review-preproc -r --tabwidth=2 *.re
/usr/lib/ruby/vendor_ruby/rubygems.rb:281:in `find_spec_for_exe': Could not find 'bundler' (1.15.3) required by your /book/Gemfile.lock. (Gem::GemNotFoundException)
To update to the latest version installed on your system, run `bundle update --bundler`.
To install the missing version, run `gem install bundler:1.15.3`
from /usr/lib/ruby/vendor_ruby/rubygems.rb:300:in `activate_bin_path'
from /usr/local/bin/bundle:23:in `<main>'
Use --force to continue.