RackとERBを使って、超シンプルなRubyのWebアプリを作る

Railsで使われているRackとERB。いつもRailsにお任せだから、たまにはRailsの皮をはいで生で触ってみたい!ということで、超基本的な部分(通常表示, リダイレクト, not found)だけいじったのでメモ。

・/にアクセスすると、/hogeにリダイレクトされる
・/hogeは変数nameとsexに格納した値をerbで表示する
・それ以外のURLにアクセスされたら404エラーを返す

という代物を作る

config.ru

#coding: utf-8                                                                                                                                 

run lambda {|env|
  request = Rack::Request.new(env)

  case request.path
  when '/' 
    Rack::Response.new {|r| r.redirect("/hoge")}
  when '/hoge'
    name, sex = 'maeharin', 'man'

    html = ERB.new(<<-EOF).result(binding)
      <html>
      <head><meta charset="utf-8"></head>
      <body>
      私の名前は<%= name %>。性別は<%= sex %>です。
      </body>
      </html>
    EOF

    Rack::Response.new(html)
  else
    Rack::Response.new("not found", 404)
  end 
}

サーバー起動

config.ruがあるディレクトリで

$ rackup

localhost:9292にアクセス

動いた!シンプルで素敵すなあ。色々いじってみよう。

※RackとERBの詳細は以下の記事などを参考。
第23回 Rackとは何か(1)Rackの生まれた背景:Ruby Freaks Lounge|gihyo.jp … 技術評論社
Rubyist Magazine - 標準添付ライブラリ紹介 【第 10 回】 ERB