Heroku+Sinatra+Haml+DataMapperで簡単自分用ブックマークサイト
前にHeroku+Git+Sinatraで簡単Webアプリというエントリを書いてから、全然Sinatraを触っていなかったので、後述するサイトを参考にしながら、一人用ブックマークサイトを作ってみた。今回は主にビューのHamlとモデルのDataMapperを組み合わせて使ってみるのが目的。(といっても、参考エントリのコードに多少手を入れただけだけども)
コード
hitoribookmark.rb
require 'rubygems' require 'sinatra' require 'dm-core' require 'haml' DataMapper::setup(:default, ENV['DATABASE_URL'] || 'sqlite3:db.sqlite3') ### class definition ### class Post include DataMapper::Resource property :id, Serial # key property :title, Text property :url, Text property :comment, Text property :used, Boolean, :default => false property :created_at, DateTime, :default => DateTime.now auto_upgrade! end ### action ### get '/' do @posts = Post.all(:order => [:id.desc], :used => false) haml :index end get '/deleteall' do @posts = Post.all(:used => false) @posts.each do |p| p.attribute_set(:used, true) p.save end redirect "/" end post "/" do Post.create(params) redirect "/" end __END__
views/index.haml
-# @@ index !!! XML !!! %html %head %meta{ 'http-equiv' => 'content', | :content => 'text/html; charset=utf-8'} | %body %h1 ひとりブックマーク %div#showfield - @posts.each do |post| %h2 %a{:href => post.url, :target => '__blank'}= post.title .p_comment= post.comment .p_date= post.created_at.to_s %form#postform{:method => :post} %fieldset %legend 新規追加 %dl %dt URL: %dd %input{:type => :text, :name => :url} %dt Title: %dd %input{:type => :text, :name => :title} %dt Comment: %dd %textarea{:name => :comment} %input{:type => :submit, :value => "Post"} %form#deleteform{:action => '/deleteall', :method => :get} %fieldset %input{:type => :submit, :value => "Delete All"}
config.ru
require 'hitoribookmark' run Sinatra::Application