1 $:.unshift File.dirname(__FILE__) + '/sinatra/lib'
2 require 'sinatra/mongrel'
9 require "superredcloth"
17 DataMapper::Database.setup(
18 :adapter => 'sqlite3',
19 :database => File.dirname(__FILE__) + "/nancy.#{Sinatra[:env].to_s}.db"
22 class Page < DataMapper::Base
23 property :slug, :string
25 property :created_at, :datetime
26 property :updated_at, :datetime
29 database.save(Page) unless database.table_exists?(Page)
32 "<h1>Unknown page name. Make sure you don't have /;& in the name</h1>"
37 def erbx(key, layout = :layout)
38 path = File.dirname(__FILE__) + "/views/%s.erb" % key
39 result = Erubis::TinyEruby.new(File.read(path)).evaluate(self)
40 if layout && key.to_s !~ /^_/
41 erbx(layout, nil) { result }
54 @page = Page.find(:first, params.pass(:slug))
58 redirect "/#{params[:slug].to_param}/edit"
63 @page = Page.find(:first, params.pass(:slug)) || Page.new(params.pass(:slug))
68 if params[:password] == Password
69 @page = Page.find_or_create(params.pass(:slug), {})
70 @page.update_attributes(params.pass(:body))
71 redirect "/#{@page.slug.to_param}"