Some tips when using a Hash of options as argument:

* use Symbols for keys instead of string, 
* use options.assert_valid_keys to help users if they mess up and send keys that won't be used; 
* use  options.fetch(key) for arguments that are required so that they'll get a KeyError instead of just blindly using nil like you would if you use options[key].

Thanks @limhoff-r7 for the ruby-fu! :)