# Ruby Reports (Ruport) 0.6.0

**URL:** <https://www.ruby-forum.com/t/ruby-reports-ruport-0-6-0/73364>\
**Category:** Ruby\
**Created:** [October 24, 2006, 6:24am UTC](https://www.ruby-forum.com/t/ruby-reports-ruport-0-6-0/73364 "2006-10-24T06:24:11Z")\
**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:** [October 24, 2006, 6:24am UTC](https://www.ruby-forum.com/t/ruby-reports-ruport-0-6-0/73364/1 "2006-10-24T06:24:11Z")

</div>

= Ruport 0.6.0 Release, the “That Guy” edition =

== What is Ruport? ==

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 parsing/munging.

Ruby Reports provides solid support for processing and formatting all  
sorts tabular data. It also includes tools to help with more  
specialized things such as graphing and invoice generation. It is  
highly extensible, so making it fit your particular needs should be  
easy.

== Quick Summary of Release ==

This release features a number of new features, some performance  
enhancements, and several bug fixes. Ruport now has additional data  
grouping and manipulation tools, a new LaTeX plugin for rendering  
tables, and support for timeouts and exception handling in our report  
runner. Additionally, full support for ERb within SQL queries was  
added.

For more info, see detailed release notes below.

== Installation ==

Ruport and its dependencies can easily be installed via rubygems:

gem install ruport

If you have trouble or want to try installing manually, see our install  
guide:

[http://ruport.infogami.com/Installation](http://ruport.infogami.com/Installation)

== Project News ==

- I gave a talk at RubyConf 2006 about Ruport without getting booed off  
stage!  
Slides and a short article available here:  
[http://ruport.infogami.com/blog/ruport\_presentation](http://ruport.infogami.com/blog/ruport_presentation)

- Dudley and I are working on a branch to redesign parts of Ruport’s  
formatting system. The hard-core are welcome to come help hack and  
test.

- This is a major release. API breakage is likely minimal, but is  
definitely something to watch out for.

== What’s New in this Release? ==

Since we’ve been hacking on this for over a month, theres a lot. The  
best way to show off some of the new stuff might be by example, so  
I’ve inlined some code into the summary of new features that was in  
Dinko’s latest Ruport News article.

From Ruport News ([http://www.stonecode.org/blog/?cat=14](http://www.stonecode.org/blog/?cat=14))

```
* added ERb support inside SQL queries

 query "select * from <%= some_method %>"

* a new LaTeX plugin for the table formatting engine

[[1,2],[3,4]].to_table.to_latex #=> latex table output

* support for summation in data tables

 [[1,2],[3,4]].to_table.sum(1) #=> 6

* new grouping functionality based on the tagging system

table = [[1,2],[3,4],[4,5]].to_table
table.create_tag_group(:first_col_even) { |r| (r[0] % 2).zero? }
table.create_tag_group(:first_col_odd) { |r| r[0] % 2 ).nonzero? }
group = table.group_by_tag

group.first_col_even.to_a == [table[2] ] #=> true
group.first_col_odd.to_a == [table[0],table[1] ] #=> true

* very large performance enhancements in HTML and text rendering

 These are orders of magnitude faster, though I'm not sure exactly 

```

how much.  
Some things that used to take 30+ mins now take 8 seconds. 🙂

```
* better integration with FasterCSV

load_csv("foo.csv", :csv_options => { :col_sep => "\t" })
# the :csv_options just get passed along to FasterCSV.

* some simple interfaces for graphs and data tables

 render_graph do |g|
  g.data = @data
  g.width = 700
  g.height = 500
  g.title = "A Simple Line Graph"
  g.style = :line
end

* syntactic sugar (shortcuts) for common tasks

 # (in report)

 my_table = table(%w[a b c]) do |t|
      #build up table object here...
 end

* support for rerunning reports on timeouts and errors

SomeReport.run(:tries => 3, :timeout => 10) { |r|
    #...
}

```

There is actually more stuff in this release than what was mentioned  
above, but that should get you started 🙂

== Resources ==

You can find more-or-less all of the information we have available via:  
[http://ruport.infogami.com](http://ruport.infogami.com)

We _love_ when people use IRC(#ruport) or the Ruport mailing list to  
contact  
us though. 😉

Also, for a high level look at Ruport, keep an eye on the  
about-once-per-week Ruport News, written by Dinko:

page: [http://www.stonecode.org/blog/?cat=14](http://www.stonecode.org/blog/?cat=14)  
feed:

== Acknowledgements ==

Mathijs Mohlmann provided the speed boosts to TextPlugin and  
HTMLPlugin. This was an essential fix to Ruport that is much  
appreciated. The support  
for retrying reports comes through a vendored and slightly tweaked  
version of Daniel B.'s attempt.rb, so thanks to Daniel too!

Thank you to NYC.rb for letting me interrupt their hackfest with an  
ill-prepared preliminary version of my RubyConf talk, the feedback you  
provided was very helpful in making my talk better for RubyConf.
