Saturday, May 10, 2008

Ruby Singleton Methods Handy for Quick and Dirty Debugging

In a previous post I talked about needing to dump ActiveRecord models in favor of record sets when producing large reports from a Rails application. While this works well, the record set returned when doing a select_all is an array of hashes. And, being a hash, if you misspell the column name and type, for example:

<%= @rs['first_nam'] %>
view raw gistfile1.htm hosted with ❤ by GitHub


nil will be returned and you will be none the wiser. Rubies singleton methods can quickly be used to detect such mistakes. Merely override the [] method with a method that will raise an error if the key can't be found:

<% @rs.each do |rec|
def rec.[](col)
raise "bah, you don't have column #{col}" if !has_key?(col)
super
end
view raw gistfile1.htm hosted with ❤ by GitHub


By appending the singleton method override for [] you can quickly find out if you have made a typo somewhere in your view when specifying the column names of the record set.

No comments:

Post a Comment