Mac OS Xなら不要。
Windowsは http://www.be-styles.jp/archives/558 あたりを参照
gem install sequel sqlite3
ruby app.rb
Mac OS Xなら不要。
Windowsは http://www.be-styles.jp/archives/558 あたりを参照
gem install sequel sqlite3
ruby app.rb
| require 'rubygems' | |
| require 'sinatra' | |
| require 'sequel' | |
| require 'cgi' | |
| Sequel::Model.plugin(:schema) | |
| Sequel.connect("sqlite://db/bbs.db") | |
| configure do | |
| use Rack::Session::Cookie, | |
| :key => 'sc.session', | |
| :expire_after => 24*60*60, | |
| :secret => 'mami_mogu_mogu_gonyo' | |
| set :haml,:format=>:html5 | |
| end | |
| helpers do | |
| def h s | |
| CGI.escapeHTML s | |
| end | |
| def hbr s | |
| h(s).gsub(/\n/,'<br />') | |
| end | |
| end | |
| # モデル (プログラムの中で使うデータ) の定義 | |
| class Messages < Sequel::Model | |
| set_schema do | |
| primary_key :id | |
| string :name | |
| string :content | |
| timestamp :created | |
| end | |
| end | |
| # データベースにテーブルがなかったら作成 | |
| Messages.create_table if !Messages.table_exists? | |
| get '/' do | |
| @messages = Messages.limit(10).order_by(:created).reverse.all | |
| @name = session[:name].to_s | |
| @title = "BBS!!!!" | |
| erb :index | |
| end | |
| post '/new' do | |
| name = params[:name].to_s | |
| content = params[:content].to_s | |
| session[:name] = name | |
| Messages.create(:name=>name,:content=>content,:created=>Time.now) | |
| redirect '/' | |
| end |
| <h1><%= h @title%></h1> | |
| <h2>新しく投稿する</h2> | |
| <form method="post" action="/new"> | |
| <div><input type="text" name="name" value="<%= h @name %>"> </div> | |
| <div><textarea name="content"></textarea></div> | |
| <div><input type="submit" value="送信"></div> | |
| </form> | |
| <h2>これまでの投稿</h2> | |
| <% @messages.each do |m| %> | |
| <div> | |
| <h3><%= h m.name %> さんの <%= h m.created.to_s %> の投稿</h3> | |
| <p><%= hbr m.content %></p> | |
| </div> | |
| <% end %> | |
| <!DOCTYPE html> | |
| <html> | |
| <head> | |
| <meta charset="UTF-8" /> | |
| <title><%= @title %></title> | |
| </head> | |
| <body> | |
| <%= yield %> | |
| </body> | |
| </html> |