Hmm, if you really don't want to use the splat *args, you could create a 
new instance of A and extend it with a #missing? method, and pass that 
instance as the default value for the method. That way, the instance 
won't be available across classes and you can just check if the argument
responds_to :missing?

class A

  missing_arg = new
  class << missing_arg
    def missing?
      true
    end
  end

  def a(arg=missing_arg)
    ...
  end

end

Hope this helps,

-Luke

-- 
Posted via http://www.ruby-forum.com/.