Route requirements lose RegExp options

I've just noticed that the :requirements option on a route doesn't like Regexp options.

for example

map.vat_validity "#{active_vat_url}/:country_code/:vat_number",     :controller => 'vat_numbers', :action => 'show',     :requirements => {       :country_code => /#{valid_eu_country}/i     }

completely ignores the 'ignore case' option at the end of the Regexp.

I've traced the problem to the way the Regexp is recast in 'generation_requirements' in the routing.rb. Essentially the options from the original regexp are not being passed to Regexp.new when it is recast. It looks like a simple patch.

However with routing being a complex beast I was wondering if somebody with better knowledge of the routing code than I could let me know if this is by design or whether it is the oversight it looks like.

NeilW

I can't see why it would be deliberate, and if there's a way for you to generate that same behaviour of adding \A and \Z then do prepare a patch for it.

Patch created: http://dev.rubyonrails.org/ticket/11421

NeilW