trade-informatics/caracal — pull request #1 by joshwlewis (2014-08-18 15:56:17+00:00)
Title: 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.