# \[ANN\] Ruport 1.6 and Murdoch 1.0

**URL:** <https://www.ruby-forum.com/t/ann-ruport-1-6-and-murdoch-1-0/134744>\
**Category:** Rails\
**Created:** [April 14, 2008, 6:53pm UTC](https://www.ruby-forum.com/t/ann-ruport-1-6-and-murdoch-1-0/134744 "2008-04-14T18:53:30Z")\
**Posts on this page:** 9\
**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:** [April 14, 2008, 6:53pm UTC](https://www.ruby-forum.com/t/ann-ruport-1-6-and-murdoch-1-0/134744/1 "2008-04-14T18:53:30Z")

</div>

Hi folks,

After a silent release of Ruport 1.6.0, I’m happy to announce Ruport  
1.6.1 and Murdoch 1.0.

Although 1.6.1 is just a README update, this announcement will serve  
as the 1.6.0 release notes as well.

Most of the changes are shifts in the internals, which will mostly be  
of interest to our more hardcore users, but there are some goodies for  
everyone.  
If you want to see some of the new stuff in action, the fastest way  
may be to take a look at this article written by Mike Milner and I:

[O'Reilly Media - Technology and Business Training](http://oreillynet.com/pub/a/ruby/2008/04/08/ruport-business-reporting)…

It is a bit basic but shows off some of the new features and gives a  
general intro to Ruport.

== Introducing Ruport’s Murdoch meta-gem

Because of Ruport’s rolling release schedule, it is sometimes  
difficult to keep up with which combinations of ruport, ruport-util  
and acts\_as\_reportable  
are compatible with each other. To help with this, we’re now  
providing a meta-gem that will grab the currently supported set of  
these three packages.

If you’re not sure exactly which parts of Ruport you want to use but  
want it all to be there just in case, all you need to do is install  
this gem:

gem install murdoch

Then, in your reports:

require “ruport/murdoch”

You can be sure that when you do this, you’ll get packages that don’t  
conflict with each other.  
You can also of course use gem locking, as needed. This will  
hopefully provide an easy way for people to grab our stable packages  
all in one fell swoop.

If you want more fine grain control, there is no need to use this gem,  
you can continue doing things as you have been.

However, if you plan on using Murdoch, here’s how the versioning  
scheme will work:

(a+k).b.c : Changes to core ruport have been made, possible API  
breakage  
a.(b+k).c : Changes to our support libs (AAR / ruport-util) have been  
made, possibel API breakage  
a.b.(c+k) : A bug fix release, no _external_ API changes present

Of course, these are just to give you a sense of what’s changed at the  
glance, always check the relevant release notes. 🙂

== Ruport 1.6 Changes ==

# API Changes

- Ruport::Renderer has been renamed Ruport::Controller. This will  
break most code, but is trivial to fix.

- The formatting helper render\_data\_by\_row has been removed. Users  
will need to explicitly call row  
renderers or create their own helpers for this.

- Table#rename\_columns() no longer creates an error when you attempt  
to rename a column that  
is not present in the table

# New Features

- Much faster CSV, Text, and HTML output

- Table#pivot() for grouping summaries based on the pivot operation

- A new ‘finalize’ hook in formatters that will be called after all  
other stages have been processed.

We’ve made use of this in our built in formatters so having to  
needlessly call render\_pdf is a thing of the past.  
(See Ruport::Formatter::PDF#finalize for an example)

- Anonymous formatters for lazy bastards:

class BookReport \< Ruport::Controller

stage :list

def setup  
self.data = Book.report\_table(:all)  
end

formatter :html do  
build :list do  
output \<\< textile(“h3. Book List”)  
output \<\< data.to\_html  
end  
end

formatter :pdf do  
build :list do  
pad(10) { add\_text “Book List” }  
draw\_table data  
end  
end

formatter :csv do  
build :list do  
output \<\< data.to\_csv  
end  
end

end

== Aknowledgements

During our work on Ruport 1.6, we’ve picked up two developers, Ryan  
Platte and Brian C…  
They were the ones who did most of the cool stuff here, so please  
direct your mad propz to them.

== Shameless Plug

The Ruport Book is now updated to cover Ruport 1.6. You can browse  
the HTML version for free at:

[http://ruportbook.com](http://ruportbook.com)

If you like what you see and/or want to support the project, consider  
purchasing a PDF or print copy:[Page Not Found | Lulu](http://www.lulu.com/content/1700117)

Users who purchase either are entitled to unlimited PDF updates with  
proof of purchase. There is no  
need to buy both the PDF and the Print version.

25% of revenue goes to a charity we think is really cool:  
Engineers Without Borders, USA ([http://ewb-usa.org](http://ewb-usa.org)).

---

<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:** [April 14, 2008, 7:00pm UTC](https://www.ruby-forum.com/t/ann-ruport-1-6-and-murdoch-1-0/134744/2 "2008-04-14T19:00:34Z")

</div>

require “ruport/murdoch”

Seriously?

You guys are terrible. I want these past 5 minutes of my life back  
(laughing to hard to do any work, then explaining to co-workers what  
was funny).

Great library though, and I will be using it much more in the future.

Jason

---

<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:** [April 14, 2008, 9:05pm UTC](https://www.ruby-forum.com/t/ann-ruport-1-6-and-murdoch-1-0/134744/3 "2008-04-14T21:05:35Z")

</div>

On Apr 14, 2008, at 10:52 AM, Gregory B. wrote:

> If you want to see some of the new stuff in action, the fastest way  
> may be to take a look at this article written by Mike Milner and I:
> 
> [O'Reilly Media - Technology and Business Training](http://oreillynet.com/pub/a/ruby/2008/04/08/ruport-business-)  
> reporting…

That URL got truncated. Looks like this is correct:

> **[O'Reilly Media - Technology and Business Training](https://www.oreilly.com)**
>
> Gain technology and business knowledge and hone your skills with learning resources created and curated by O'Reilly's experts: live online training, video, books, our platform has content from 200+ of the world's best publishers.

And in case that also gets truncated, here’s a shortened one:

[http://rubyurl.com/ysvL](http://rubyurl.com/ysvL)

---

<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:** [April 14, 2008, 10:28pm UTC](https://www.ruby-forum.com/t/ann-ruport-1-6-and-murdoch-1-0/134744/4 "2008-04-14T22:28:32Z")

</div>

On Apr 14, 12:59 pm, “Jason R.” [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> require “ruport/murdoch”
> 
> Seriously?
> 
> You guys are terrible. I want these past 5 minutes of my life back  
> (laughing to hard to do any work, then explaining to co-workers what  
> was funny).

Hehe, yes. In fact, we considered releasing murdoch on April 1st, but  
were afraid people would think it was a joke. 🙂

> Great library though, and I will be using it much more in the future.

Thanks. Please join our mailing list and let us know if you have any  
problems or suggestions.

[http://list.rubyreports.org](http://list.rubyreports.org)

-greg

---

<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:** [April 15, 2008, 11:22am UTC](https://www.ruby-forum.com/t/ann-ruport-1-6-and-murdoch-1-0/134744/5 "2008-04-15T11:22:29Z")

</div>

hehe … same reaction here. Thanks for the laugh Gregory (and of  
course all the work you guys have been doing with Ruport).

- JohnM

On 15/04/2008, at 2:59 AM, Jason R. wrote:

> Jason

–  
John M. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)

“We must be careful about what we pretend to be.”

- Kurt Vonnegut

---

<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:** [April 15, 2008, 4:41pm UTC](https://www.ruby-forum.com/t/ann-ruport-1-6-and-murdoch-1-0/134744/6 "2008-04-15T16:41:07Z")

</div>

Gregory,  
I ask you this from time to time and thought maybe there was a  
breakthrough…is there a way to include code39 barcodes in your  
reports?  
Thank you,  
Kathleen

---

<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:** [April 15, 2008, 8:13pm UTC](https://www.ruby-forum.com/t/ann-ruport-1-6-and-murdoch-1-0/134744/7 "2008-04-15T20:13:25Z")

</div>

On Apr 15, 8:46 am, “Rick DeNatale” [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> > > require “ruport/murdoch”
> 
> For symmetry, I might have named it murdech instead of murdoch.

Ahahaha, if only we thought of that before the release.

---

<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:** [April 15, 2008, 2:47pm UTC](https://www.ruby-forum.com/t/ann-ruport-1-6-and-murdoch-1-0/134744/8 "2008-04-15T14:47:17Z")

</div>

On Tue, Apr 15, 2008 at 5:21 AM, John M. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
wrote:

> hehe … same reaction here. Thanks for the laugh Gregory (and of  
> course all the work you guys have been doing with Ruport).
> 
> - JohnM
> 
> On 15/04/2008, at 2:59 AM, Jason R. wrote:
> 
> > require “ruport/murdoch”

For symmetry, I might have named it murdech instead of murdoch.

–  
Rick DeNatale

My blog on Ruby  
[http://talklikeaduck.denhaven2.com/](http://talklikeaduck.denhaven2.com/)

---

<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:** [April 15, 2008, 8:14pm UTC](https://www.ruby-forum.com/t/ann-ruport-1-6-and-murdoch-1-0/134744/9 "2008-04-15T20:14:36Z")

</div>

On Apr 15, 10:40 am, “removed\_email\_address@domain.invalid” [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
wrote:

> Gregory,  
> I ask you this from time to time and thought maybe there was a  
> breakthrough…is there a way to include code39 barcodes in your  
> reports?

None of our developers are currently working on this. You might ask  
on the Ruport list if anyone has attempted it.

Patches to ruport-util for this are certainly welcome.

[http://list.rubyreports.org](http://list.rubyreports.org)

-greg
