rack を使った簡易 Web フレームワークを作ってみた2
昨日の続きです。昨日の日記は説明不足だったかもと思ったのでちょっと補足。rack とは?って人は、rack について以下に詳しい説明が載ってます。
ウノウラボ Unoh Labs: RackでWebアプリのWebサーバー依存を無くす
http://labs.unoh.net/2007/05/rackweb.html
そんなわけで昨日の自作フレームワークを使って、tropy もどきを作ってみました。ソースはこんな↓感じです。
#!/usr/bin/env ruby # -*- coding: utf-8 -*- require 'hebo' require 'kconv' if RUBY_VERSION < '1.9.0' class Array def choice at(rand(size)) end end end class Hebopy < Hebo::Application def index if request['id'] and request['title'] != '' and request['body'] !='' id = request['id'] @db[id] = { :title => request['title'].toutf8, :body => request['body'].toutf8, } end id ||= @db.keys.choice return create unless @db.exist?(id) @title = html_escape(@db[id][:title]) @body = html_escape(@db[id][:body]).gsub(/\n/, "<br>") render("templates/page") end def create @id = create_id render("templates/create") end private def initialize @db = Hebo::Database.new('db/hebopy.pstore') @charset = "utf-8" end def create_id s = "0123456789abcdef" (1..s.length).inject(""){|r, x| r << s[rand(s.length)] } end end # Hebo.start Hebopy, :adapter => :webrick Hebo.start Hebopy, :adapter => :cgi
へぼい tropy もどきだから、へぼぴーって名前にしてみました。実際に動いてる奴はこちら↓。
http://rocky.sakura.ne.jp/hebopy/
hebopy ソース一式はここ↓に置いてあります。
http://code.google.com/p/kenkiti/source/browse/trunk/ruby/hebo.rb/