Yossef Mendelssohn wrote: > What I really don't like is how define_method, since it takes a block, > uses this same sort of argument handling. That means > > define_method :meth do |arg| > end > > is the equivalent of > > def meth(*arg) > end > > with a warning. > > If I want to create a method that takes one argument and acts like a > normal method, what are my choices? Apparently, I get to use only > 'def' itself, but that means I need string eval if the method name is > contained in a variable. > > Am I wrong? Is there a better way? This may not be what you're looking for, but if you need define_method in order to use a variable from the outer scope, you could do something like: some_value = 42 define_method :meth do |*args| _meth(some_value, *args) end ..which would bomb if the number of args was incorrect Daniel