[ANN] Nitro + Og 0.23.0 Scaffolding reloaded, Taggable, Nano/Mega integration

(George Moschovitis) #1

Hello everyone,

New versions of Nitro (Web Application Framework) and Og (Object
Relational Mapping) were released:

Homepage: http://www.nitrohq.com
Download: http://rubyforge.org/projects/ nitro
Mailing List: http://rubyforge.org/mailman/l istinfo/nitro-general

The summer vacations are over and there is a brand new Nitro
release. There is a preview of the new Scaffolder (also handles
Og relations), support for Tagging (folksonomy), lots of small
features and improvements and many bug fixes. Additionally, the
code has been restructured to utilize the excellent Nano and Mega
support libraries.

Most notable additions:

* Scaffolding reloaded. The scaffolding infrastructure is
reimplemented to generate more flexible code. The automatically
generated forms allow for visualization and editing of
Og relations such as HasMany and BelongsTo.

For example when rendering a BelongsTo relation all possible
parents are presented with a select element. When rendering a
HasMany relation a list of all children is presented.

Moreover, an experimental admin component is provided. Just add the

require 'part/admin'

and surf


To enter a simple administration screen.

WARNING: This feature is considered a preview and will be
improved in a future version.

* Major cleanup in the Glue subproject. Some files are moved
to the nano/mega project. Nano/Mega is now used throughout
Nitro and really makes development so much easier.

* Introduced Og Taggable mixin. It was never easier to add
tagging to your application.

  class Article
    include Og::Taggable

  article.tag('navel', 'gmosx', 'nitro')
  Article.find_with_tags('navel', 'gmosx')
  Article.find_with_any_tag('name', 'gmosx')

  t = Article::Tag.find_by_name('ruby')

For an example usage of this Mixin, consult the Spark sources.

* Added support for relative and absolute URLs in redirects
and renders. This feature simplifies the creation of reusable

* Support for assigning compound objects from the request. Here
is an example:

  class Article
    property :title, String
    property :body, String

    <input type="text" name="article.title" />
    <input type="text" name="article.body" />

  article = request.assign('article')

Alternatively you can use the article[title] article[body]

* Added simple Benchmarking mixin.

* Added support for 'evolving' a single Og managed class. Useful
when you are in development mode and change your schema.

* Added support for session garbage collection.

* Many many small bug fixes in Og and Nitro.

Nitro provides everything you need to develop professional Web
applications using Ruby and Javascript.

Nitro redefines Rapid Application Development by providing a
clean, yet efficient API, a layer of domain specific languages
implemented on top of Ruby and the most powerful and elegant
object relational mapping solution available everywhere.

Nitro is Web 2.0 ready, featuring excellent support for AJAX,
XML, Syndication while staying standards compliant.

Nitro gives choice to the developer: Multiple paradigms are
implemented, incorporating ideas from Rails, CherryPy, Catalyst,
Wee, PHP, JSP and Microsoft.NET and more. The developer is free
to choose the pattern that better fits his application. This
kind of freedom makes Nitro applicable to a wide range of
applications, spanning from big, scalable web sites with thousands
of concurrent users to simple solutions for deployment on intranet

have fun :slight_smile:
George Moschovitis