Middlemanを試してみた

静的サイトジェネレータの一つであるMiddlemanを使う機会があったのでメモ。

Jekyllやら、Octpressやら、黒い画面を使わない(らしい)Phestやら色々ありますが、今回はなんとなくMiddlemanにしました。

Rubyの記法も何となく覚えられるので一石二鳥…なのだろうか。

Middlemanについて

RubyのフレームワークのSinatoraベースで作られていて、ERBだけじゃなくてHAMLやらSlimやらStylusやらSASSやらCofeescriptやら色々対応しているみたいです。
この辺りは他の静的ジェネレータでも恐らく一緒でしょうか?(使ったこと無いので分かりませんが…)

YAMLベースでテンプレート側に変数を渡す事が出来るので、プログラマブルに構築する際は結構便利な気がします。

ちなみに、インストールから初期設定については日本語ドキュメントが充実していて、公式サイトでかなり丁寧にかかれていますので、そこで事足りると思います。

後は個人的に詰まった所。

相対パスにする

特に設定をしない場合は、ページリンクや読込のパスが絶対パスになりますが、最終的に公開する際にサブディレクトリにアップロードしたい時には面倒なことになるので、相対パスにしたい時があるかと思います。

そんな時もconfig.rbに二行加えるだけ。

# リンクを相対化
set :relative_links, true  
# ファイル読込を相対化
activate :relative_assets  

参考サイト:Middlemanで全部相対パスにする | Border/memo

ブロックリンクを作成する

テキストリンクを作成する際は、

<%= link_to 'Link Text', '/path/to.html' %>  

のように記述しますが、aタグ内に色々詰め込みたい時には不便です。
だからといって直にHTMLタグでパスを書いてしまってはジェネレータを使う利点が損なわれてしまうので、調べてみたところ下記のような記法がるようです。

<% link_to '/path/to.html' do %>  
aタグ内に入れたい要素  
<% end %>  

参考サイト:Railsのlink_toでブロックごと囲む方法 – リア充爆発日記

パーシャルに変数を渡す

同じような構造のHTMLを作る時に便利なパーシャルですが、PHPのrequireみたいに変数を引き継ぐわけではありません。むしろ、コチラの挙動が普通でしょうか?
ということで、partialに追記することで渡せます。

下記のように記述すると、 source/path/_to.erb に、foo という変数名で、 bar の値を引き継ぎます

<%= partial "path/to", :locals => { :foo => bar } %>  

しかし、公式サイトにしっかり記載がありましたちゃんとよく読みましょう。

参考