From: Caleb Tennis Date: 2005-12-17T00:42:54+09:00 Subject: Smarter creation of redunant methods I have some methods in a class that look like this: def h_coil(chan) raise NoDataError if @h_coils[chan].nil? @h_coils[chan] end def i_coil(chan) raise NoDataError if @i_coils[chan].nil? @i_coils[chan] end and so on and so forth... I've been refactoring a bit to cut down on the redunancy in the code, and I'm wondering your thoughts on the best way of doing this, considering that all methods have the same "signature". Is define_method the smartest way? # pseudo code off the top of my head, probably has errors: def create_coil_method(name) define_method(name) do |chan| iv = ("@" + name.to_s + "s").to_sym val = instance_variable_get(iv) raise NoDataError if val.nil? val[chan] end end create_coil_method(:h_coil) create_coil_method(:i_coil) ... Thanks, Caleb