[Nitro] Nitro + Og 0.28.0: Cacheable, Ruby Query Language, Mongrel, Og cloning

George Moschovitis george.moschovitis at gmail.com
Mon Feb 6 13:17:37 EST 2006

Dear devs,

new versions of Nitro and Og where just released

homepage: http://www.nitrohq.com
install: gem install nitro
download: http://rubyforge.org/projects/nitro/
irc: irc.freenode.net #nitro
mailing list: http://rubyforge.org/pipermail/nitro-general/

Whats new:

A snapshot of the latest developments. As always, cool new
features were added, the code is refactored, the security increased
and reported bugs fixed.

Most notable changes:

* New generalized caching system. The caching code is refactored
in a new Glue system. At the moment, caches in memory, DRb,
filesystem and Og are provided. A memcache version will be available
in the near future. The new caching system is used to implement
Session stores, Og caching, Fragment caching, and Application scoped
parameters. A useful DRb cache management script is provided to
manage multiple DRb caches.

* Introduced a new Og Cacheable mixin. By including this mixin
in your classes you make them eligible to Og caching. Here comes
an example:

class User
  is Cachable
  property :name, String
  property :age, Fixnum

Cacheable reuses the new generalized caching system to provide
various options for distributed caching. At the moment entities
(instances of managed classes) are cached by their primary key.

* Og now advanced quering using Ruby as the data query language
to complement the usage of Ruby as a data definition language
and provide an end-to-end Ruby solution. At the moment only
supported for the SQL based adapters. Here comes an example:

  users = User.find do |user|
    user.age > 10
    user.any {
      name == 'George'
      name == 'Stella'

  # => SELECT * FROM oguser WHERE (oguser.age > 10 AND (oguser.name =
'George' OR oguser.name = 'Stella'))

This feature uses the Caboose/EZ code by Ezra Zygmuntowicz.
Pure magic!

* Og find now supports prepared statement like syntax:

  User.find :condition => ['name LIKE ? and create_time > ?', 'g%', Time.now]

The interpolated values are automatically escaped to avoid
SQL injection attacks.

Some additional forms of find are supported:

User.find [['name = ? and create_time > ?', 'gmosx', Time.now]
User.find "name = 'gmosx'"

and more.

* Added experimental support for  deep copying (cloning) of Og
managed objects. This mechanism handles properties (annotated
attributes) and some relation types.

* Integration of Facets 1.0.1. The new library features a better
API and better implementation of various features.

* Introduced experimental Mongrel adapter, just use:

  ruby myapp.rb --mongrel

* Fixes in the SCGI/FCGI adapters.

* Added schema evolution support to the SQLite adapter. All major
Og adapter support automatic schema evolution, ie Og detects common
types of changes in your Ruby code to automatically alter the
underlying schema  for you.

* Introduced Og SQLite2 (legacy SQLite) adapter.

* Added more test cases, and improved RDoc comments throughout
the code.

* Many, many bug fixes.

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.

have fun,
George Moschovitis + Nitro Development Team


More information about the Nitro-general mailing list