The Nitro/Og team recently released version 0.40.0 of their web development framework and ORM. Nitro and Og are a less well known alternative to Ruby on Rails (and its ORM, Active Record) that bear looking into.
I asked George Moschovitis what he thought Nitro and Ogs biggest strengths are and he said, "Totally transparent web/db development. Creating a web or db application is like creating a standard ruby application."
George also provided a couple of quick examples. For Nitro:
class HelloWorld
def index
print "hi"
end
def hello
"hello world"
end
def math(val1, val2)
print "The sum is #{val1} + #{val2}"
end
end
Nitro.start(HelloWorld)
And for Og:
class Article
is Timestamped
is Taggable
attr_accessor :title, String
attr_accessor :body, String
attr_accessor :hits, Fixnum
belongs_to :category
end
class Category
has_many :articles
end
Og.start
Og represents a pretty big departure from the ActiveRecord model that a lot of developers are used to. It maps Ruby objects to sql tables (non-sql too, if you'd rather go that way) instead of the other way round. In fact, Og will even create your DB tables for you transparently, if they don't already exist.
Nitro and Og have been around for about as long as Ruby on Rails, but they'e still not hit a 1.0 release. When I asked him about this, George explained:Please note that 0.40.0 is not 0.4.0. There were 40 revisions, after 0.9.0 we got to 0.10.0, not 1.0.0. Kind of like there is gnome 2.16.0 instead of 3.0.0
But, it is true that the community is much slower, and the fact that I as the main developer had to finish with my army service (Just finished 1 week ago, that is why you see this new release ;-))
But the community is getting stronger and I hope we will tackle Nitro's biggest problem, lack of documentation.
Nitro and Og represent a different way of doing web development with Ruby. Do yourself a favor and go check them out. Even if you don't become a convert it will help you think about how you use Ruby and Ruby on Rails.
Community comments
RoR and Nitro/Og
by Alex Popescu,
Templates
by Sam Smoot,
Re: Templates
by Alex Popescu,
Re: Templates
by James Britt,
Re: Templates
by Jonathan Buch,
RoR and Nitro/Og
by Alex Popescu,
Your message is awaiting moderation. Thank you for participating in the discussion.
With the current exposure of RoR, I am wondering what chances Nitro/Og has. I have heard really good things about it, but it may be missing the "guerilla marketting" around RoR.
./alex
--
:Architect of InfoQ.com:
.w( the_mindstorm )p.
Co-founder of InfoQ.com
Templates
by Sam Smoot,
Your message is awaiting moderation. Thank you for participating in the discussion.
If only the templates weren't custom. I've never understood why Nitro didn't just use erb.
Still, there's a lot of things about Nitro/Og I like a lot.
Re: Templates
by Alex Popescu,
Your message is awaiting moderation. Thank you for participating in the discussion.
Sam, it would be great to let us know what are at least the top 5 things you like about Nitro/Og, so that others will understand its benefits.
TIA,
./alex
--
:Architect of InfoQ.com:
.w( the_mindstorm )p.
Co-founder of InfoQ.com
Re: Templates
by Jonathan Buch,
Your message is awaiting moderation. Thank you for participating in the discussion.
erb is not XML compatible, that was the main reason for George. The custom templates can be a validated with xml tools, which is a plus.
The custom templates also nicely precompile to pure ruby code, which makes them fast.
Downside... well, one has to learn another type of syntax, which is like a hybrid between IOWA, PHP and pure Ruby.
Well, at least it's flexible, which is why Nitro is so cool.
Re: Templates
by James Britt,
Your message is awaiting moderation. Thank you for participating in the discussion.
I'm not Sam, but ...
Things I like about Og/Nitro:
* I can focus on Ruby objects, not database tables
* My apps can seamlessly evolve from a single static HTML page to fully-dynmaic, databased-backed Web apps
That's it. 2, not 5, things. But it can make all the difference; you need to pick the right tool for the job, and know how to make the best use of the various Ruby Web toolkits.