== Welcome to Reactive

Please visit www.ruby-reactive.org for further informations.

== Description:

Reactive is a desktop application framework that gives everything
needed to create database-backed applications according to the
Model-View-Control pattern of separation.

Reactive is highly inspired and also uses code of Rails, the famous
Web-Framework for ruby.

In Reactive, the model is handled by what's called an object-relational mapping
layer. Reactive doesn't impose any ORM, you may choose the one you like but
Reactive defaults to Active Record. This means it has baked in support for it,
without forcing you to use it.

The view part is independant of Reactive, this means that the application has
to choose a view provider and feed it into Reactive. This leads to complete
freedom for the GUI part. View providers are packaged as gems, so that it is
easy for the developer to choose and install them. Look for reactive_view_*
to discover some view providers (at this early alpha stage, only reactive_view_wx
is available)

The controller is part of Reactive and is loosely coupled to the view. Simple
convention set up the link.


== Getting Started

1. At the command prompt, start a new Reactive application using the <tt>reactive</tt> command
and your application name. Ex: reactive myapp -w wx
2. Change directory into myapp and start the application: <tt>script/run</tt>
3. Welcome into your new application!


== Debugging Reactive

Sometimes your application goes wrong. Fortunately there are a lot of tools that
will help you debug it and get it back on the reactive.

First area to check is the application log files. Have "tail -f" commands running
on the development.log. Reactive will automatically display debugging
and runtime information to these files.

You can also log your own messages directly into the log file from your code using
the Ruby logger class from inside your controllers. Example:

class WeblogController < ApplicationController
def destroy
@weblog = Weblog.find(params[:id])
@weblog.destroy
logger.info("#Time.now Destroyed Weblog ID ##@[email protected]!")
end
end

The result will be a message in your log file along the lines of:

Mon Oct 08 14:22:29 +1000 2007 Destroyed Weblog ID #1

More information on how to use the logger is at http://www.ruby-doc.org/core/

Also, Ruby documentation can be found at http://www.ruby-lang.org/ including:

* The Learning Ruby (Pickaxe) Book: http://www.ruby-doc.org/docs/ProgrammingRuby/
* Learn to Program: http://pine.fm/LearnToProgram/ (a beginners guide)

These two online (and free) books will bring you up to speed on the Ruby language
and also on programming in general.


== Debugger


== Console


== Description of Contents

app
Holds all the code that's specific to this particular application.

app/controllers
Holds controllers that should be named like products_controller.rb.
All controllers should descend from ApplicationController
which itself descends from Reactive::Controller::Base.

app/models
Holds models that should be named like post.rb.
Most models will descend from ActiveRecord::Base if you chose this ORM.

app/views
Holds the code or template files for the view that should be named like
products/index.rb for the ProductsController#index action. The master views are
pure Ruby code.

app/helpers
Holds view helpers that should be named like products_helper.rb. These are generated
for you automatically when using script/generate for views. Helpers can be used to
wrap functionality for your views into methods.

assets
Contains specific application files, like icons and help files.

config
Configuration files for the Reactive environment, the database, and other dependencies.

db
Contains the database schema in schema.rb. db/migrate contains all
the sequence of Migrations for your schema.

doc
This directory is where your application documentation will be stored when generated
using <tt>rake doc:app</tt>

lib
Application specific libraries. Basically, any kind of custom code that doesn't
belong under controllers, models, or helpers. This directory is in the load path.

script
Helper scripts for automation and generation.

test
Unit and functional tests along with fixtures. When using the script/generate scripts, template
test files will be generated for you and placed in this directory.

gems
Alternate gem repository. You may install dependent gems into this directory. This is used for
the plugin system.