Sinatra自体にはView機能は無いので、他のテンプレートライブラリを使いことになります。
まあ、使わなくてもいけそうなんですが、それはそれでコードが見づらくなるし、PHPでSmartyに慣れきってしまっている僕としては無いと寂しいのです。
ざっと以下のライブラリがサポートされてます。
・Haml
・Sass
・Erb
・Builder
■テンプレートエンジン選び
まず、Builderは無し。
あんまり検索したけど、情報が出てこなかった。
SassはCSS用のライブラリだし、Hamlの機能の一つって事で、これも置いとく。
で、HamlとErbに絞られたんだけど、なんとなく勢い的にはHamlな感じ。
なんだかカッコいいでなー。
けど、Erbを使うことにした。
理由としては、
・覚える事が少ない
・Hamlは実装は綺麗だけど、あまりに原形をとどめていない=覚えることが多そう
難しいことは嫌なのです。
■Erbで頑張ってみる
Erbの使い方は以下のサイトを参考にした。
ERB More
まあ、適当です。
SinatraからErbを使う時は、
※「./views」ディレクトリを変更も可
■レイアウト機能も使えるよ
レイアウト機能っていうのかしら。
一部分だけをページ毎に変えたいって時に使う場合に使う奴。
レイアウトファイル使いたくないわ!って時は、
■テンプレートへの値の渡し方
2パターンあります。
(1)インスタンス変数で渡す
(2)ローカル変数として渡す
■その他、オプション値まとめ
ソースを見た感じ、こんぐらいな気がする。
と、こんなところまで調べました。
ある程度切り捨てちゃってる感が、気持ちが良いのかもと思いました。
まあ、使わなくてもいけそうなんですが、それはそれでコードが見づらくなるし、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 #テンプレートのディレクトリも指定可試してないのもあるし、マニュアルに無いのもあるけど、動くくさい。と、こんなところまで調べました。
ある程度切り捨てちゃってる感が、気持ちが良いのかもと思いました。
コメント
Smartyみたいにキャッシュ機能があるテンプレートエンジンで、
何か良いのないですかねぇ?
また別のところでのキャッシュ機能を使うのが作法の様な気がする。
フレームワークとか、Proxyとか。
Ruby全然わかんないんでw
ごめんなさい・・・。
そうなんですねー。
探しても、Smartyみたいにキャッシュの生存期間を設定できるのがないんですよねぇ。
> また別のところでのキャッシュ機能を使うのが作法の様な気がする。
なるほどー。
勉強になります。