Ramzeを使ってみる
Partty!.orgのWebインターフェイスはRubyで書いたのですが、Ruby on Railsではなく、Ramazeという変な名前のWebフレームワークを使ってみました。Railsと比べてブラックボックスがずっと少なく、分かりやすいのがいい感じです。データベースを使わずにVCモデルで構築することもでき、現にPartty!.orgはデータベースを使っていません。(これはターミナル共有プログラムがデータベースに対応していないのが主な理由です)
RamazeのHello, World!は↓こんな感じで、ファイル1つで完結します。
require 'rubygems' require 'ramaze' class HelloController < Ramaze::Controller map '/' def index "Hello, World!" end end Ramaze.start :adapter => :webrick, :port => 8888
これでhttp://localhost:8888/にアクセスすると、「Hello, World!」と表示されます。
テンプレートエンジンくらいは使いたいよね、ということで、↓こんな感じにするとErubisを使えます。
require 'rubygems' require 'ramaze' require 'erubis' # Erubis class HelloController < Ramaze::Controller map '/' engine :Erubis # Erubis def index # メンバ変数にいろいろ入れる @a = "Hello, World!" end end Ramaze.start :adapter => :webrick, :port => 8888
- view/index.rhtmlファイル
<html> <body> <!-- メンバ関数からいろいろ取り出す --> <p><%=h @a %></p> </body> </html>
index以外にパブリックなメソッドを定義しておくと、「/メソッド名/引数1/引数2」というURLにアクセスがあったときに、そのメソッドが呼ばれるようになります。
require 'rubygems' require 'ramaze' require 'erubis' class HelloController < Ramaze::Controller map '/' engine :Erubis def index @a = "Hello, World!" end def session(name, year, month, day) @name = name @year = year @month = month @day = day end end Ramaze.start :adapter => :webrick, :port => 8888
- view/session.rhtmlファイル
<html> <body> <h1><%=h @name %></h1> <p><%=h [@year, @month, @day].join('-') %></p> </body> </html>
http://localhost:8888/session/test/2008/3/12 にアクセスすると、name = test、year = 2008、month = 3、day = 12になっています