Merbの開発がなかなか進展しないのでSinatraをちょっと触ってみたところ、
DataMapper、Herokuとの組み合わせが非常に簡単でいい感じでした。
blog.rb
1 require "rubygems"
2 require "sinatra"
3 require "dm-core"
4 require "haml"
5
6 DataMapper::setup(:default, ENV['DATABASE_URL'] || 'sqlite3:db.sqlite3')
7
8 class Post
9 include DataMapper::Resource
10 property :id, Serial
11 property :content, Text
12 auto_upgrade!
13 end
14
15 get "/" do
16 @posts = Post.all(:order => [:id.desc])
17 haml :index
18 end
19
20 post "/" do
21 Post.create(params)
22 redirect "/"
23 end
24
25 __END__
26 @@ index
27 %h1 Hello, Sinatra!
28 %ul
29 - @posts.each do |post|
30 %li= post.content
31 %form{:method => :post}
32 %textarea{:name => :content}
33 %input{:type => :submit, :value => "Post"}
config.ru
1 require "blog.rb"
2 run Sinatra::Application
ローカルで起動するには
1 % ruby blog.rb
もしくは
1 % rack
でok. rubyの場合はhttp://localhost:4567、Rackの場合は http://localhost:9292 にアクセス。
これをHerokuにデプロイすると、
http://sinatora-blog.heroku.com/
こんな感じで動きます。