From: David Pollak Date: 2006-05-07T04:14:43+09:00 Subject: Re: [ANN] Nitro + Og 0.30.0: VCR mode, Og QBE, Feeds, Fixes ------=_Part_30844_31037540.1146942879029 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Wow... sounds like a ton of excellent features. I've done a Google search to find a comparison of Nitro and Rails, but didn't see much other than a couple of blog posts. Do you guys have a comparision or any other sugggestions about how to understand the approaches and benefits to different development communities of Rails and Nitro? On 5/5/06, George Moschovitis wrote: > > Dear devs, > > The Nitro Development Team is proud to announce new versions of Nitro and > Og > > homepage: http://www.nitroproject.org > install: gem install nitro > download: http://rubyforge.org/projects/nitro/ > trac: http://devlab.oree.ch/trac/nitrohq > irc: irc.freenode.net #nitro > faq: http://oxyliquit.manveru.net > mailing list: http://rubyforge.org/pipermail/nitro-general/ > > > Another pragmatic release. The Nitro development team worked over > the submitted tickets and provided many bug fixes. More over, there > are many small improvements along the codebase and as always > we could not resist adding some cool new features. > > Special thanks fly to Bryan Sotto for making this release > possible! > > Most notable chages: > > * Nitro allows fine grained customization of the compiler > tranformation pipeline per controller or even per action. > Here come some examples: > > class MyController > ann :self, :transformation_pipeline =3D> [MyTransformer, AnotherXForm= ] > > ... > > def my_action > ... > end > ann :my_action, :transformation_pipeline =3D> > Compiler.transformation_pipeline.dup.shift(CustomXForm) > > ... > end > > * Nitro automates integration testing by means of the new > session VCR feature that allows for easy proxy based > functional testing. A typicall session goes like this: > > Start your app with: > > ruby run.rb --record myfile > > Then use your web browser to 'perform' your testing session. > You can used multiple browsers, concurrent users and hit all > the pages in your app. At the end, just stop the server. > > In order to perform regression testing against this recorded > session just restart the server in playback mode: > > ruby run.rb --playback myfile > > Nitro automatically plays back the recorded session and logs > any errors or Exceptions. > > * Better Global variable implementation works better with > distributed stores (Drb, Memcached). Notice the new > Global.init and Global[:key].update { |v| } methods. > > * Improved the Router implementation. One notable addition > is support for global router initialization: > > Router.rules =3D [ > { :match =3D> /~(.*)/, :controller =3D> IdController, :action =3D> > :view, :params =3D> [:name] } > ] > > * Cleaned up glue by removing files duplicating functionality > allready available in Facets. Moreover, we moved several > generally useful files and methods from Glue to Facets. > > * Replaced the old RSSHelper with the new FeedHelper. The new > implementation provides support for RSS, Atom, OPML. The > FeedHelper is backwards compatible with the old helper but > provides even more features. > > class MyController > helper :feed > end > > * Added Og query by example support. Query the database for an > entity that matches the example. The example is a hash > populated with the property values to search for. > > The provided property values are joined with AND to build > the actual query. > > Article.query_by_example :title =3D> 'IBM%', :hits =3D> 2 > Article.find_with_properties :title =3D> 'IBM%', :hits =3D> 2 > > * Added type casting support for Og aggregations and > calculations. > > * Greatly improved the configuration system. One noteable > (and extremely useful) new feature is that you can now > customize classes before they are even defined: > > > Configuration.User.crypt_salt =3D 'HELLO' > require 'users' > > in users.rb: > > class User > setting :crypt_salt, :default =3D> 'DF', :doc =3D> 'The crypt salt' > end > > * Calculate rendering level in actions to allow for conditional > rendering in top level actions or sub-actions. Some helpers > are also provided: > > def myaction > if request.is_top_level? > ... > end > end > > * Introduced an alternative more sophisticated (yet intuitive) > form builder. While this new helper is still under construction, > it is already very useful. Here come some examples: > > > >
> #{form :object =3D> @owner, :action =3D> :save_profile do |f| > f.property :name, :editable =3D> false > f.property :password > f.br > f.submit 'Update' > end} >
> > > >
> #{form :method =3D> :multipart do |f| > f.p { > f.label 'Select the new icon filename' > f.select_file :file, :label =3D> 'Select icon' > } > f.p { > f.submit 'Change' > } > end} >
> > * More flexible Script generator, the developer can use most of > its features without a Client subclass. > > * Reimplemented session garbage collection. > > * Added many more RDoc comments to the source code. > > * Many, many bug fixes. > > * Updated to latest Facets, Scriptaculous, Prototype. > > > > 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. > > Please note that the project home page has been moved to: > http://www.nitroproject.org > > > > have fun, > Nitro Development Team > > > > -- > http://www.nitroproject.org > > -- -------- David Pollak's Ruby Playground http://dppruby.com ------=_Part_30844_31037540.1146942879029--