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