Copyright (c) 2009 Michael Fellinger m.fellinger@gmail.com

All files in this distribution are subject to the terms of the Ruby license.

About Ramaze

Ramaze is a very simple and straight-forward web-framework. The philosophy of it could be expressed in a mix of KISS and POLS, trying to make simple things simple and complex things possible.

This of course is nothing new to anyone who knows some ruby, but is often forgotten in a chase for new functionality and features. Ramaze only tries to give you the ultimate tools, but you have to use them yourself to achieve perfect custom-tailored results.

Another one of the goals during development of Ramaze was to make every part as modular and therefor reusable as possible, not only to provide a basic understanding after the first glance, but also to make it as simple as possible to reuse parts of the code.

The original purpose of Ramaze was to act as a kind of framework to build web-frameworks, this was made obsolete by the introduction of rack, which provides this feature at a better level without trying to enforce any structural layout of the resulting framework.

Features Overview

Ramaze offers following features at the moment:

Ramaze takes advantage of the rack library to provide a common way of handling different ways to serve its content.

Rack supports at the moment:

* [Mongrel](http://mongrel.rubyforge.org/)

  Mongrel is a fast HTTP library and server for Ruby that is intended for
  hosting Ruby web applications of any kind using plain HTTP rather than
  FastCGI or SCGI.

* [WEBrick](http://www.webrick.org/)

  WEBrick is a Ruby library program to build HTTP servers.

* CGI

  CGI is the Common Gateway Interface and is one of the most basic ways
  to integrate into Webservers  Apache or Lighttpd.

* FCGI

  Improvment of CGI as it doesn't start up a new connection to Ramaze on
  every request.

Basic Principles

There are some basic principles that Ramaze tries to follow:

Ramaze doesn't introduce any major change of paradigm for everyone familiar with Ruby and the basics of Web-development.

Ramaze tries to be intuitive and easy to learn. Most functionality is built in a way to help, not to obfuscate or confuse.

Use what you want and how you want it.

Through Ruby Ramaze provides one of the most powerful programming-languages available, giving you full control over your system.

Even the most essential parts of Ramaze can easily be replaced and/or modified without losing the advantage of the whole framework.

Nothing besides Ruby is required for the basic features.

Of course you can take advantage of several wonderful libraries, but Ramaze is built in a way to be run on any basic setup.

Document everything, classes, modules, methods, configuration...

Through 100% documentation Ramaze gives the developer easy and solid understanding of the underlying concepts and functionality.

Everyone is welcome to contribute to Ramaze in the easiest way possible. The repository is open for patches passing the Test-suite.

Everyone learns different, some only read the source, others browse documentation, but everyone loves examples for a quick and painless start.

Ramaze addresses this need and offers a wide variety of examples of usage, basic functionality, project-layout and more advanced applications.

Ramaze has a very complete set of so-called specifications built by RSpec. These specs define the way Ramaze has to behave.

The specs are checked every time a new patch is pushed into the repository, deciding whether the changes the patch applies are valid and don't break the framework.

Installation

The simplest way of installing Ramaze is via the gem.

Rubygems is the package manager for ruby apps and libraries and provides you with the last tagged version of Ramaze.

  $ gem install ramaze

Versions are made as we see fit and get an announcement out (usually that's the major obstacle as there is a lot to announce).

If you want to install the nightly gem of Ramaze you can do this with:

  $ gem install ramaze --source=http://gem.ramaze.net/

We also use the gem building process on github, which locates gems at http://gems.github.com - so you can get a version from there as well:

  $ gem install manveru-ramaze --source=http://gems.github.com/

To get the latest and sweetest, you can just pull from the repository and run Ramaze that way.

  $ git clone git://github.com/manveru/ramaze.git

Please read the man git or git help for more information about updating and creating your own patches. This is at the moment the premier way to use Ramaze, since it is the way I use it.

Some hints for the usage of Git.

Getting Started

Now that you have a vague idea of what you're about to get into you might just want to get a way to get up and running ASAP. Please read below for more information about installation.

Depending on what you are planning to do you can either just go and start reading the source or directly get some hands-on experience by trying some of the examples. Most things will require dependencies though. The basic functionality is provided by the WEBrick adapter and the Template::Ramaze, which just run out of the box. For more features you will have to install some templating-engines and mongrel (very recommended). Ramaze will inform you when it needs further dependencies, so just go and try some things.

Some places to get started are: - Read the documentation. - Run and read the test cases. - Look at the examples and run/modify them.

A couple of Examples

There are some examples for your instant pleasure inside the examples-directory in the Ramaze-distribution. To start up an example, you can use the Ramaze binary located in bin/ramaze for example:

$ ramaze examples/hello.rb

Or:

$ cd examples/blog $ ramaze

Since ramaze uses the start.rb by default if you don't pass anything else.

For more information about the usage of ramaze try:

$ ramaze --help

Examples include:

How to find Help

For help you can:

And thanks to...

There is a large number of people who made Ramaze possible by their ongoing efforts in the world of open source and by encouraging and helping me.

This list is by no means a full listing of all these people, but I try to get a good coverage despite that.

I would like to thank: