at posts/single.html

フレームワーク Sizuku (2)

簡単に使い方を。

  • Sizuku::Hanlder を継承して新しいクラスを作り、「handle_アクション」のメソッドを作る。
    • ブラウザでアクセスした時のPATH_INFOに対応したアクションメソッドが実行される。デフォルトはmain。
  • アクションメソッドは、プレゼンテーションオブジェクト(後述)を返すようにする。
    • プレゼンテーションオブジェクトは、Sizuku::ErbTemplateかSizuku::Amrita2Templateをincludeしておく。
    • このオブジェクトをテンプレートファイル(アクション名.rhtml, アクション名.html)に適用させた結果が出力になる。

以下がサンプル。

index.cgi

#!/usr/bin/env ruby
require 'sizuku'

# Action Object
class MyHandler < Sizuku::Handler
  def handle_main(req, res)
    MainPage.new
  end

  def handle_sub(req, res)
    AmritaPage.new
  end
 end

# Presentation Object
class MainPage
  include Sizuku::ErbTemplate

  def text
    'hello world in erb'
  end
end

class AmritaPage
  include Sizuku::Amrita2Template

  def text
    'hello world in amrita2'
  end
end

require 'cgi'
cgi = CGI.new
MyHandler.new('sample.conf').handle(cgi)

main.rhtml

<html>
 <body>
  <p><%= text %></p>
 </body>
</html>

sub.rhtml

<html>
 <body>
 <p amrita_id='text'></p>
 </body>
</html>

上の例では、 http://example.com/index.cgi/main/ にアクセスすると handle_main が呼ばれ、 MainPage と main.rhtml を結合した結果が出力になる。

同じように、http://example.com/index.cgi/sub/ だと handle_sub が呼ばれ、 AmritaPage と sub.html を結合した結果が出力になる。

あんまり複雑なことはできないけど、ちょっとしたCGIを作る分には使えると思う。

あとは、設定ファイルの読み込みと、エラー処理の仕組みが必要だな…。

関連する日記