Re:VIEWで技術書を書いているときにファイルを変更したら自動でビルドする
ファイルの変更を検知して、Re:VIEWのビルドを自動化したら便利だったのでブログに書いておく。
設定方法
vvakame/docker-reviewのdockerイメージを使ってビルドするスクリプトを {project_root}/bin/build
として作成しておきます。
#!/bin/sh SHELL_PATH=$(cd $(dirname $0)/;pwd) ROOT_PATH="${SHELL_PATH}/.." IMAGE="vvakame/review:3.2" docker run --rm -v ${ROOT_PATH}:/work -w /work ${IMAGE} /bin/sh -c "rake clean preproc pdf"
次にGemfileに以下の行を追加して、bundle install を実行する。
source 'https://rubygems.org' gem 'rake' gem 'review', '3.2.0' + + group :development do + gem 'listen', '~> 3.0' + end
あとはファイルの変更を検知して自動ビルドする {project_root}/bin/auto-build
を作る。
#!ruby require 'listen' root_path = File.expand_path('..', __dir__) patterns = [/\.re$/, /\.yml$/] listener = Listen.to(root_path, only: patterns) do |modified, _added, _removed| next if modified.size.zero? result = system("#{__dir__}/build") # Macの人は以下をコメントアウトするとビルド後に通知できる # status = result ? 'success' : 'failed' # system("osascript -e 'display notification \"#{status}\" with title \"Re:VIEW build\"'") end listener.start sleep
bin/auto-build
を実行した後に xxx.re
のファイルを変更すると自動でビルドされて、pdfが更新されます。
自動ビルドの前に原稿を書こう
Re:VIEWでファイル保存したら、自動でpdfをビルドして通知されるようにした。進捗を出す準備は完璧だぞ!(まだ進捗はゼロです)
— 神速 (@sinsoku_listy) 2019年8月15日
現実逃避をしてる場合ではない。