def method_missing(name, *args, &block)
      if args.empty? && !block_given? && @arg_names.include?(name)
        @args[name]
      else
        super
      end
    end
def method_missing(name, *args, &block)
      if args.empty? && !block_given? && @arg_names.include?(name)
        @args[name]
      else
        super
      end
    end
If a named argument with the specified method name exists, a call to that
 method will return the value of the argument.

 @param (see ClassMethods#method_missing)
 @see #args
 @see #[]

 @example
   option :user, [:name] do
     @user = name
   end