Merbの開発がなかなか進展しないのでSinatraをちょっと触ってみたところ、
DataMapper
blog.rb
1 require "rubygems" 2 require "sinatra" 3 require "dm-core" 4 require "haml" 5 6 DataMapper::setup(:default, ENV['DATABASE_U RL'] || 'sqlite3:db .sqlite3') 7 8 class Post 9 include DataMapper ::Resource 10 property :id, Serial 11 property :content, Text 12 auto_upgra de! 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.conte nt 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://loc
これをHerokuにデプロイすると、
http://sin
posted by
genki
on Tue 14 Jul 2009
at 15:37
with
2 comments
おー、Sinatra+DataMapperいいかんじですねえ。まださわり始めなのですが、DataMapperのシンプルかつ強力さはいろいろ読んでてぐっときてます。
ちなみに、こまかいのですが、このまま $ ruby blog.rb した時、sqlite3ファイルが保存されない(というか生成されない)現象が手元で出ました。(dm-core-0.9.11あたり) DataMapperのログにも何も出ないので、DataMapperのコード追ってみたところ、
DataObjects::URI.parse("sqlite3://db.sqlite3").path # => ""
というのが原因のようです。(この path の値で sqlite3_open しているので、この場合、空文字列のファイル名でファイル生成とかになってるのかな。。)
ので、この場合スキーマの定義は
"sqlite3://#{Dir.pwd}/db.sqlite3"
とかしたほうがよさげです。
おお、どうもです!
修正しておきました。