Nitro + Og 0.40.0

Hello everyone,

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

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

This is the biggest release yet! Tons of new wonderful features, code
refactoring, bug fixes, documentation improvements and so much more.

Special thanks for this release fly to Jonas Pfeniger, Jonathan/Fabian
Buch and Michael F…

Most notable changes:

  • Fully transparent Og managed objects. No need to use the special
    property notation. Just use the standard attr_accessor macro:

    class User
    attr_accessor :name, String, :sql => 'VARCHAR(32)
    attr_accessor :password, String
    attr_accessor :age, :login_count, Fixnum

    belongs_to :group
    has_many :comments
    joins_many :categories
    end

    Og automatically detects and manages this class!

  • The Og adapter model was re-engineered from scratch. The new adapter
    code is better refactored. It is now extremely easy to write new
    adapters for various RDBMS systems.

  • Og build mode. This avoids multiple sql queries when you are
    ‘building’ (ie attaching related objects) a new object.

  • You can now easily lookup Og entities by name:

    u = User[1] # classic

    or

    u = User[‘gmosx’] # this works as well!

    for the new method to work you need to annotate the attribute to use
    for named lookups:

    class User
    attr_accessor :name, String, :key => true

    end

  • Og set attribute, a nice helper to set only some attributes.

    b = Book[1]
    b.set_attribute :title => ‘Hello’ # updates only title in the DB
    b.instance_attribute_set ‘@title’, ‘Hello’ # Ruby style
    b.set_attributes :title => ‘1’, :hits => 3

  • Much more intelligent dispatcher now handles nested controllers and
    many ‘edge’ cases. For example:

    Server.map = {
    ‘/’ => SiteController,
    ‘/users’ => UserController,
    ‘/users/categories’ => UserCategoryController,
    ‘/users/comments’ => UserCommentController

    }

  • Introduced the notion of Controls as extensions of the Elements
    feature. The auto administration part was recoded to utilize the
    Controls system. Ooh, and the admin screens now display validation
    errors.

  • Introduced Console/Script adapter. This is a new adapter that allows
    you to programmatically send http requests to Nitro. You can send
    GET/POST/etc request to any action you like with any request
    parameters.

    This adapter is used in the console mode. You can access it through
    the $app variable. You can also use this adapter to perform
    sophisticated testing, our specialized automation scripts.

  • New and improved nitro command. Among many new features the new
    command supports:

    • Easy setup of clusters:

      nitro --cluster 3

      if the default port is 9000 starts 3 instances of the application
      listening on 9000, 9001, 9002. This command is smart enough
      to also name the instances for easy identification when you
      give ‘ps aux’.

      Useful for Mongrel/FastCGI deployment.

    • Automatic start of state servers. You need a ‘state’ server if tou
      use Mongrel/Nitro to keep the distributed session and global variables
      and any other common data you want to use.

  • Output cache cleanup. Just start the console

    nitro console

    and give:

    $cache.cleanup

  • More flexible elements namespace selection, you can easier
    have multiple skins in your web app, per controller, per
    controller group etc. A low level example:

    class MyController
    ann :self, :elements => CustomSkin
    end

  • More flexible configuration system. See the updated examples for the
    details.

  • Further improvements in the form builder. Among other things, it now
    works better with flash parameters and handle errors.

  • Greatly improved the Mongrel adapter. In fact nitro+mongrel running
    behind apache is now the reference deployment method. We have removed
    the unsupported SCGI adapter, please use Mongrel instead.

  • The StaticInclude compiler now handles recursive includes.

  • Brand new automatic administration part.The new implementation is
    much simpler, elegant and easier to extend.

  • Many more bug fixes and smaller improvements.

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,
Nitro Team

I’ve always meant to look at Nitro, except… I can’t for the heck of it
find documentation that would let me “get it”.

Is there any material that has a “manual” scope, i.e. goes into an
overview how the architecture and lets me see the big picture? Sifting
through tutorials and rdocs isn’t quite much.

David V.

I recall being on the IRC channel quite some times. :slight_smile:

I’d too like to side in and push you guys a little to do more on the
tutorials and docu side of things. :wink:

But otherwise thumbs up!

Marc H. wrote:

I recall being on the IRC channel quite some times. :slight_smile:

I’d too like to side in and push you guys a little to do more on the
tutorials and docu side of things. :wink:

Hal F.'s new edition of The Ruby Way has a section that discusses
Nitro.


James B.

“Hackers will be expelled”

  • The Breakfast Club (1985)

Hello David,

let me quote this from an email by James B.:

Hal F.'s new release of The Ruby Way, 2nd ed. has a section on Nitro (written by me,
as it happens).

-g.

George M. wrote:

Hello David,

let me quote this from an email by James B.:

Hal F.'s new release of The Ruby Way, 2nd ed. has a section on
Nitro (written by me,
as it happens).

James did a great job on that. I didn’t change much.
He was the biggest contributor to the book, besides me. :slight_smile:

Hal

On Tuesday 14 November 2006 09:05, George M. wrote:

Hal,

Is this book released?

Yep, got it right here :slight_smile:

http://www.samspublishing.com/bookstore/product.asp?isbn=0672328844&rl=1

Mark

On 11/14/06, Hal F. [email protected] wrote:

He was the biggest contributor to the book, besides me. :slight_smile:
Well, my contribution pales next to the volume of detail you assembled.

I did a little show-and-tell at the Phoenix Ruby group last night, and
passed around some recent books. I encouraged the group to get
your book as a followup to Programming Ruby. It pretty much covers
everything.

Quite impressive.

In some ways it is like the Ruby Cook Book from O’Reilly, but that
book does not (based on my sporadic reading) have the same sort of
cohesive thread offering more technical background detail.

I’m glad I could make a contribution, but I can’t imagine the effort
required to get all that information together.

Everyone should go get a copy.

James

George M. wrote:

Hal,

Is this book released?

No… it escaped. :wink:

Seriously, it has been available since the last week
in October. Online, that is – most bookstores haven’t
seen it yet, I think.

Hal

Hal,

Is this book released?

-g.

Seriously, it has been available since the last week
in October. Online, that is – most bookstores haven’t
seen it yet, I think.

Will get it from Amazon, thanks :slight_smile:

-g.

On 15 Nov 2006, at 00:16, Hal F. wrote:

George M. wrote:

Hal,
Is this book released?

No… it escaped. :wink:

Very true.

Seriously, it has been available since the last week
in October. Online, that is – most bookstores haven’t
seen it yet, I think.

My copy arrived 2 days ago, ordered from Amazon UK. Looks good: a
very worthwhile update to the first edition, and a good complement to
Pickaxe and Ruby for Rails.

Paul

Everyone looking for docs, have a look at the new, redesigned Oxyliquit
(http://oxyliquit.de). Its latest tip (http://oxyliquit.de/tip/32)
covers changes from Nitro 0.31.0 to 0.40 for those who want to migrate
old Nitro apps to 0.40. This might be a worthwhile read for those who
read the Nitro chapter of Hal F.'s “The Ruby Way, 2nd edition”.

Fabian

Just trying to get to know something about Nitro, so now replying to an
older message:

Fabian Buch:

Everyone looking for docs, have a look at the new, redesigned Oxyliquit
(http://oxyliquit.de). Its latest tip (http://oxyliquit.de/tip/32)

What is wrong with oxyliquit.de and nitroproject.org? Sometimes (i.e.,
very often) they give me no more than “(error)”. Sometimes (i.e., very
seldom) a page works.

Kalman

On 11/15/06, Hal F. [email protected] wrote:

Is it available in e-format, as I am the owner of the 1st hard-copy
version and still unhappy that I couldn’t find it in e-format :-S.

TIA,

./alex

.w( the_mindstorm )p.

Hi,

Just trying to get to know something about Nitro, so now replying to an
older message:

Fabian Buch:

Everyone looking for docs, have a look at the new, redesigned Oxyliquit
(http://oxyliquit.de). Its latest tip (http://oxyliquit.de/tip/32)

What is wrong with oxyliquit.de and nitroproject.org? Sometimes (i.e.,
very often) they give me no more than “(error)”. Sometimes (i.e., very
seldom) a page works.

Oxyliquit.de resides on a (very) crappy virtual server. When you see a
‘temporarily down’, the server is currently being restarted (which means
that the server just killed the nitro instance). You can just reload,
it’ll take around 10-30 seconds to restart (mostly depending on the
moon phase, the humidity, and the ever shifting mood of the server).
When there’s the error page (in an unexpected place) it’s probably the
connection to the memcached server which has been dropped (due to some
butterfly in southern japan) and the server will also be automatically
restarted at most one minute after.

Any complaint, bug report or general hate mail go to me, don’t hold
back. :stuck_out_tongue:
(For nitroproject.org write to George M., I don’t like wikis
and so don’t feel responsible for that. :P)

So yes, I apologize for every inconvenience this causes people who
browse the site, I’m aware of the stability problems and am trying
to cut those down by ‘optimizing’ the error recovery. I just happen
to be a poor student not being able to push all too much money that
way. :wink:

I’m also aware that this doesn’t really show Nitro in the way that it
should be shown. Nitro is (IMO of course) the most cozy way to build
websites with Ruby. Nitro really deserves better, so please don’t get
put off by oxyliquit. ^^;

If you want to know more about Nitro and like faster feedback, the
#nitro channel on irc.freenode.net is small but full of helpful people.
The mailing list is also a good starting point (lately it’s looking
more like a -dev list, don’t be scared by the [PATCH] mails and enliven
the list by just being a newbie asking questions (yes, we suffer the
complete opposite of the ruby ML, we have too many ‘knowledgeable’
people and too few new ones).)

Again, I apologize for outages of Oxyliquit; have a nice day.

Kashia B.:

What is wrong with oxyliquit.de and nitroproject.org? Sometimes (i.e.,
very often) they give me no more than “(error)”. Sometimes (i.e., very
seldom) a page works.

[much information about the Nitro site, IRC channel and mailing list]

Thanks for these. I’ll definitely turn up on IRC or mailing list, to
see
whether I get a picture (be it small or big) of Nitro. My hope is to
see
in it a web framework which suits my needs better than Rails does, and
to
find answers why I do not even get the examples to work.

Kalman