# Ruby Reports 0.4.17

**URL:** <https://www.ruby-forum.com/t/ruby-reports-0-4-17/98634>\
**Category:** Ruby\
**Created:** [July 17, 2006, 3:36am UTC](https://www.ruby-forum.com/t/ruby-reports-0-4-17/98634 "2006-07-17T03:36:19Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![naething](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/e47774/32.png) [@naething](https://www.ruby-forum.com/u/naething)\
**Post date:** [July 17, 2006, 3:36am UTC](https://www.ruby-forum.com/t/ruby-reports-0-4-17/98634/1 "2006-07-17T03:36:19Z")

</div>

== 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 🙂

For those interested, here is the source for the benchmarks:  
[http://pastie.caboo.se/paste/4868](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](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](http://reporting.stonecode.org)  
[1] [http://ruport.infogami.com/Installation](http://ruport.infogami.com/Installation)  
[2] [http://lists.stonecode.org/listinfo.cgi/ruport-stonecode.org](http://lists.stonecode.org/listinfo.cgi/ruport-stonecode.org)  
[3] [http://ruport.infogami.com/blog/cool\_community\_happenings](http://ruport.infogami.com/blog/cool_community_happenings)  
[4] [http://ruport.infogami.com/blog/pruning](http://ruport.infogami.com/blog/pruning)  
[5] [http://ruport.infogami.com/blog/atom.xml](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 F. / Dinko Mehinovic for helping with the new  
data system.
