yaml やら md で良い感じの静的サイトを作ることができる jekyll だけど、これがまた LANG=C
な環境で i18n なサイトを作ろうとすると内部にある YAML.load
で invalid character エラーが発生してしまう。
でどうするかというと、Encoding.default_external
を変更したうえで jekyll コマンドでやっていることをベタッと手書きする。
require 'jekyll'
module Jekyll::Convertible
Encoding.default_external = Encoding::UTF_8
end
options = Jekyll.configuration({...})
Jekyll::Site.new(options).process
Jekyll.configuration
には jekyll コマンドに渡しているオプションを optparse した結果を引数として渡す。
ダサいけど、上のようにすると LANG=C な環境でも無事 jekyll が動くようになる。便利~。
早速、手元でしょうがなく capistrano を使っているプロジェクトを mina に置きかえてみました。
config/deploy.rb ファイル固定というのがむむーんポイントではありますが、-f で毎回指定するだるさに比べればしょうがないとして諦めた。puppet の方はもっとスッキリできるかも。