# File: README
[ "README", "AUTHORS", "COPYING", "lib/capcode.rb", nil].each do
Capcode.view_html
Capcode::Views.view_html
Capcode::Helpers.view_html
Capcode::HTTPError.view_html
Capcode::RenderError.view_html
Capcode::RouteError.view_html
Capcode::ParameterError.view_html
end
README / Thu May 07 15:41:00 +0200 2009

Capcode

Copyright (C) 2009 Gregoire Lejeune

DESCRIPTION:

Capcode is a web microframework

FEATURES/PROBLEMS:

0.5.0

  • Add Haml and Markaby renderer
  • json is deprecated and replaced by render( :json => … )

0.4.0

  • Major bug correction !
  • Add views…

0.3.0

  • Work with Rack 1.0.0

0.2.0

  • Add models with DataMapper and couch_foo
  • Add two new options : :daemonize and :pid
  • Bug correction in Route.

0.1.0

  • First public release
  • No models !!!

SYNOPSIS:

  # file: sample.rb
  require 'rubygems'
  require 'capcode'

  module Capcode
    class Hello < Route '/hello'
      def get
        "Hello World #{Time.now} !"
      end
    end
  end

  Capcode.run( )

Running Capcode Apps

Create model

  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.

Create View

  # 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( )

Create Helper

  # 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( )

Render with Markaby

  # file: sample.rb
  require 'rubygems'
  require 'capcode'
  require 'capcode/render/markaby'

  module Capcode
    class Hello < Route '/hello'
      def get
        @t = Time.now
        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( )

Render with Haml

        # file: sample.rb
        require 'rubygems'
        require 'capcode'
        require 'capcode/render/haml'
        Capcode::Helpers.haml_path = "./my_haml_views"

        module Capcode
          class Hello < Route '/hello'
            def get
              @t = Time.now
              render :haml => :time
            end
          end
        end

        Capcode.run( )

        # ./my_haml_views/time.haml
        %html
          %body
            %p
              Hello World
              = @t

Render with JSON

        # file: sample.rb
        require 'rubygems'
        require 'capcode'
        require 'capcode/render/json'

        module Capcode
          class Hello < Route '/hello'
            def get
              @t = Time.now
              render :json => { :time => @t }
            end
          end
        end

        Capcode.run( )

REQUIREMENTS:

  • rack

INSTALL:

  sudo gem install capcode

LICENSE:

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.