ブログツールのテーマ実装の参考にRadiantを調べてみた。
テーマ以外の部分でもrailsのOSSアプリを作るために参考になる仕掛けが一杯あって参考になりました。
しかし、全体的にソースがとても綺麗・・・。
「CMSの実装ってのはよぅ、こう、もっとドロドロした・・・おっさんの内臓みたいなものであるべきだろう?」
などとつぶやいてみたが駄目。
RadiantはそもそもCMSってこともあって、テンプレはDBにもってプログラムで出す形。
要はroutesの一番下に
map.with_options(:controller => 'site') do |site|
(...)
# Everything else
site.connect '*url', :action => 'show_page'
end
みたいなこじゃれた事が書いてあって管理画面とか以外のurlは全てSiteControllerが捕まえるようです。そしてResponseCacheという自前のキャッシュのためのモデルを使ってる。(ARじゃなくてファイルに保存する)
キャッシュファイルは/style.css.(data|yml)/みたいになってて、dataがcssやhtmlの中身で、ymlにはLast-Modifiedみたいなヘッダのメタデータが入ってる。ETagやX-Sendfileもちゃんと処理してあって、なんだか真似して実装するのは大変そうだなぁ、といった感じ。
そもそもサンプルのテンプレ見ると”“画像とjavascriptは外部から読み込んでる”“んだよね。
キャッシュはrailsのpage cacheで済ませられないものかと考え中です・・・。