| Path: | README.rdoc |
| Last Update: | Wed Feb 10 08:55:37 +0100 2010 |
Copyright (C) 2009, 2010 Gregoire Lejeune
Capcode is a web microframework
gem uninstall Capode --version '< 0.9.0'
# file: sample.rb
require 'rubygems'
require 'capcode'
module Capcode
class Hello < Route '/hello'
def get
"Hello World #{Time.now} !"
end
end
end
Capcode.run( )
require 'rubygems'
require 'capcode'
require 'capcode/base/dm' # or require 'capcode/base/couchdb'
class Story < Capcode::Base
include Capcode::Resource
property :id, Integer, :serial => true # only with DataMapper !
property :title, String
property :body, String
property :date, String
end
See examples/blog-dm.rb and/or examples/blog-couchdb.rb for complete examples.
# file: sample.rb
require 'rubygems'
require 'capcode'
module Capcode
class Hello < Route '/hello'
def get
@t = Time.now
render :time
end
end
end
module Capcode::Views
def time
"Hello world #{@t}"
end
end
Capcode.run( )
# file: sample.rb
require 'rubygems'
require 'capcode'
module Capcode
class Hello < Route '/hello'
def get
@t = Time.now
render :time
end
end
end
module Capcode::Helpers
def bold( &b )
"<b>"+yield+"</b>"
end
end
module Capcode::Views
def time
"Hello world " + bold { @t }
end
end
Capcode.run( )
# file: sample.rb
require 'rubygems'
require 'capcode'
module Capcode
class Hello < Route '/hello'
def get
@t = Time.now
# This implies that capcode-render-markaby is installed !
render :markaby => :time
end
end
end
module Capcode::Views
def time
# We use Markaby in Capcode::Views.time
html do
body do
p {
text "Hello World "
b @t
}
end
end
end
end
Capcode.run( )
# file: sample.rb
require 'rubygems'
require 'capcode'
module Capcode
set :haml, "./my_haml_views"
class Hello < Route '/hello'
def get
@t = Time.now
# This implies that capcode-render-haml is installed !
render :haml => :time
end
end
end
Capcode.run( )
# ./my_haml_views/time.haml
%html
%body
%p
Hello World
= @t
# file: sample.rb
require 'rubygems'
require 'capcode'
module Capcode
class Hello < Route '/hello'
def get
@t = Time.now
# This implies that capcode-render-json is installed !
render :json => { :time => @t }
end
end
end
Capcode.run( )
# file: sample.rb
require 'rubygems'
require 'capcode'
module Capcode
# !!! Render file from /Users/greg/temp !!!
class WebDav < Route '/temp'
def get
# This implies that capcode-render-webdav is installed !
render :webdav => "/Users/greg/temp"
end
def method_missing(id, *a, &b)
get
end
end
class Index < Route '/'
def get
render "WebDav server acces : <a href='#{URL(Capcode::WebDav)}'>#{URL(Capcode::WebDav)}</a>"
end
end
end
Capcode.run( )
# file: sample.rb
require 'rubygems'
require 'capcode'
module Capcode
class Public < Route '/public'
def get
render "This page is not protected"
end
end
class Private < Route '/private'
def get
http_authentication( :type => :digest, :realm => "Private part" ) {
{ "greg" => "p4ssw0rd" }
}
render "This page is private - Hello #{request.env['REMOTE_USER']}"
end
end
end
Capcode.run( )
Second example :
# file: sample.rb
require 'rubygems'
require 'capcode'
module Capcode
http_authentication( :type => :digest, :realm => "Private part", :routes => ['/admin', '/private'] ) {
{ "greg" => "p4ssw0rd" }
}
class Public < Route '/public'
def get
render "This page is not protected"
end
end
class Private < Route '/private'
def get
render "This page is private - Hello #{request.env['REMOTE_USER']}"
end
end
class PrivateAgain < Route '/private/again'
def get
render "This page is also private - Hello #{request.env['REMOTE_USER']}"
end
end
class Admin < Route '/admin'
def get
render "This page is private - Hello #{request.env['REMOTE_USER']}"
end
end
end
Capcode.run( )
First create the directory structure :
my_app/ my_app/tmp my_app/public
Then put your app in my_app/ and comment or remove the line with Capcode.run
Create a rack configuration file (config.ru) in my_app/
require 'app' run Capcode.application()
Capcode.application take the same parameters as Capcode.run (and block too). Be carefull, if you use static files (with the static renderer) you must set the :root option (:root => File.expand_path(File.dirname(FILE)) is probably good)
You can now deploy your application like a "Rack-based Ruby application"
sudo gem install capcode
Capcode is freely distributable according to the terms of the GNU General Public License.
This program is distributed without any warranty. See the file ‘COPYING’ for details.