Use ActiveSupport like option extraction for less strict method signatures.

So, this is pretty much how ActiveSupport does it, though this doesn't use the monkey patches on Array. I think this should fix your problems.