[ANN][SoC] Ruby Reports 0.4.17

== Ruport 0.4.17 ==
The "Arnold Schwartzenegger" Edition
(This is my 6th release since the start of Google's Summer of Code)

== About ==

Ruby Reports is a software library that aims to make the task of
reporting less tedious and painful. It provides tools for data
acquisition, database interaction, formatting, and munging.

== New in this release ==

This release features a lot of additional features for building
formatting engines and plugins. This past week saw the first user
created engine, and a lot of the refinements were specifically to make
this task easier.

Documentation is still lacking, but there is an example of most of the
new features being used.[3]

There is also a really easy to use function (prune) for cleaning up
duplicates in tabular data.[4]

Another simple, but nice enhancement is that you can now treat DataRow
attributes as accessors

data.select { |r| r.first_name.eql? "greg" }

Finally, we've started work on a replacement for DataSet/DataRow.
Here are some probably poorly constructed benchmark results.

                                                 user system
total real
new: creating rows 0.716667 0.033333 0.750000 ( 0.485740)
new: loading from CSV 6.483333 1.150000 7.633333 ( 4.705149)
new: making a CSV 7.250000 0.233333 7.483333 ( 5.245229)

old: creating rows 9.666667 0.366667 10.033333 ( 6.170871)
old: loading from CSV 12.516667 1.233333 13.750000 ( 8.432342)
old: making a CSV 61.650000 1.516667 63.166667 ( 40.108137)

The new system will almost certainly pick up some speed setbacks as we
make it more feature complete, but this is certainly a promising
amount of cushioning!

In shoddy memory map analysis, the new system seems to more than 2x
smaller on average, as well :slight_smile:

For those interested, here is the source for the benchmarks:
http://pastie.caboo.se/paste/4868

== Project News ==

Please test the new Data::Table and Data::Record classes! They may
not be robust yet, but these will be part of a new base for Ruport's
data manipulation, so be sure to try them out and let me know what
else you'd like to see added.

Also... the #ruport channel seems to be growing by the day, at one
point today I counted 8 nicks! So if you want to lurk with us...
please come do so.

== Installing Ruport ==

it's a gem. it can also be installed via setup.rb

detailed instructions available [1]

=== SVN tag ===

svn://rubyforge.org//var/svn/ruport/tags/rel_0_4_17

=== Project Download Page ===

http://rubyforge.org/frs/?group_id=856

=== Resources ===

Please join the mailing list[2] and bombard me with questions,
suggestions, and bug reports. Also feel free to contribute to the
wiki[0]. I recently got severed from Ruby Buzz somehow, so you also
might want to subscribe to the atom feed[5]

[0] http://reporting.stonecode.org
[1] http://ruport.infogami.com/Installation
[2] http://lists.stonecode.org/listinfo.cgi/ruport-stonecode.org
[3] http://ruport.infogami.com/blog/cool_community_happenings
[4] http://ruport.infogami.com/blog/pruning
[5] http://ruport.infogami.com/blog/atom.xml

Also, catch up with us in #ruport on freenode

=== Acknowledgements ===

james Healy for his work on an Order/Invoice engine which will soon be
in Ruport. Dudley Flanders / Dinko Mehinovic for helping with the new
data system.