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 reactive command and your application name. Ex: reactive myapp -w wx

  2. Change directory into myapp and start the application: script/run

  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 ##{@weblog.id}!")
  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 www.ruby-doc.org/core/

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

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.