Rubyのフレームワーク「Sinatra」を使ってみた(View編)

Sinatra自体にはView機能は無いので、他のテンプレートライブラリを使いことになります。
まあ、使わなくてもいけそうなんですが、それはそれでコードが見づらくなるし、PHPでSmartyに慣れきってしまっている僕としては無いと寂しいのです。

ざっと以下のライブラリがサポートされてます。
・Haml
・Sass
・Erb
・Builder

■テンプレートエンジン選び
まず、Builderは無し。
あんまり検索したけど、情報が出てこなかった。

SassはCSS用のライブラリだし、Hamlの機能の一つって事で、これも置いとく。

で、HamlとErbに絞られたんだけど、なんとなく勢い的にはHamlな感じ。
なんだかカッコいいでなー。

けど、Erbを使うことにした。
理由としては、

・覚える事が少ない
・Hamlは実装は綺麗だけど、あまりに原形をとどめていない=覚えることが多そう

難しいことは嫌なのです。


■Erbで頑張ってみる
Erbの使い方は以下のサイトを参考にした。
ERB More
まあ、適当です。

SinatraからErbを使う時は、
erb :index
とかやっちゃけば、
./views/index.erb
の内容が表示される。
※「./views」ディレクトリを変更も可


■レイアウト機能も使えるよ
レイアウト機能っていうのかしら。
一部分だけをページ毎に変えたいって時に使う場合に使う奴。

./views/layout.erb
ってファイルを作って、ページ毎に変えたい部分に
<%= yield %>
と書いておけば、宜しくやってくれます。
レイアウトファイル使いたくないわ!って時は、
erb :index, :layout => false 
でOK。


■テンプレートへの値の渡し方
2パターンあります。

(1)インスタンス変数で渡す
@hoge = 'unko'
とやっておけば、テンプレートファイルで
<%= @hoge %>
で、表示されます


(2)ローカル変数として渡す
erb :index, :locals => {:unko => 'unkoman'} 
とやっておけば、テンプレートファイルで
<%= unko %>
で、表示されますよー。


■その他、オプション値まとめ
ソースを見た感じ、こんぐらいな気がする。
:layout           #レイアウトの有無(true/false)、レイアウトファイルの指定も出来る模様
:locals           #ローカル変数指定
:views_directory  #テンプレートのディレクトリも指定可
試してないのもあるし、マニュアルに無いのもあるけど、動くくさい。


と、こんなところまで調べました。
ある程度切り捨てちゃってる感が、気持ちが良いのかもと思いました。

コメント

  1. tagawa 2010/02/14 13:37:12
    Sinatraで使えて、
    Smartyみたいにキャッシュ機能があるテンプレートエンジンで、
    何か良いのないですかねぇ?
  2. longkey1 2010/02/15 17:26:20
    んー多分だけど、無いんじゃないかなー。
    また別のところでのキャッシュ機能を使うのが作法の様な気がする。
    フレームワークとか、Proxyとか。

    Ruby全然わかんないんでw
    ごめんなさい・・・。
  3. tagawa 2010/02/16 20:15:46
    > んー多分だけど、無いんじゃないかなー。

    そうなんですねー。
    探しても、Smartyみたいにキャッシュの生存期間を設定できるのがないんですよねぇ。

    > また別のところでのキャッシュ機能を使うのが作法の様な気がする。

    なるほどー。
    勉強になります。

アーカイブ

2012

  • 01
  • 02
  • 03
  • 04
  • 05
  • 06
  • 07
  • 08
  • 09
  • 10
  • 11
  • 12

2011

2010

2009

2008

2007

コンタクト

longkey1[at]gmail[dot]com