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.