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になっています