From: Joe Van Dyk [mailto:joevandyk / gmail.com] > def do_something_with_a_report report > # calls Reports::This or Reports::That, dtermined by what report is > # something like report.call ? > end class Reports def self.this puts "#{self} is doing 'this'" end def self.that puts "#{self} is doing 'that'" end def self.run_report( report_name ) send( report_name ) end end def do_something_with_a_report( report_name ) Reports.run_report( report_name ) end do_something_with_a_report( :this ) #=> Reports is doing 'this' def do_something_with_a_report2( report ) report.call end do_something_with_a_report2( Reports.method( :this ) ) #=> Reports is doing 'this'