In methods that takes a variable amount of arguments, there's sometimes an informal calling convention. For instance, a soak operator must take 4 arguments, no more and no less unless it's empty. There's no way to tell Ruby this is what you really want, but you can integrate this nicely into your Ruby code by throwing the ArgumentError yourself.
#!/usr/bin/env ruby
def meth(a, *args)
if args.length != 4 and not args.empty?
raise ArgumentError, "args must be zero or four elements"
end
puts args.inspect
end
meth 1
# args is empty, this is OK
meth 1, 2,3,4,5
# args is four elements, this is OK
meth 1, 2
# args is 1 element, this will raise exception

