From: George Moschovitis Date: 2006-05-06T03:58:22+09:00 Subject: [ANN] Nitro + Og 0.30.0: VCR mode, Og QBE, Feeds, Fixes 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 => [MyTransformer, AnotherXForm] ... def my_action ... end ann :my_action, :transformation_pipeline => 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 = [ { :match => /~(.*)/, :controller => IdController, :action => :view, :params => [: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 => 'IBM%', :hits => 2 Article.find_with_properties :title => 'IBM%', :hits => 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 = 'HELLO' require 'users' in users.rb: class User setting :crypt_salt, :default => 'DF', :doc => '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 => @owner, :action => :save_profile do |f| f.property :name, :editable => false f.property :password f.br f.submit 'Update' end}
#{form :method => :multipart do |f| f.p { f.label 'Select the new icon filename' f.select_file :file, :label => '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