I'm getting really cheesed off with RSpec not matching some of my routes when controller testing when I have subdomain checking (courtesy of subdomain-fu) on namespaces. These routes appear in the rake routes output, and work fine via HTTP requests .
The really annoying thing is it's working fine for routes that aren't at the root of the namespace. E.g. say I have map.namespace :foo, :path_prefix => '', :conditions => { :subdomain => 'foo' } do |foo| foo.bars, :controller => 'bars', :only => [:show] do |bar| bar.resources some_things .... end foo.resources :monkeys end My specs for bars/some_things all resolve the routes fine (e.g. doing get :index etc.) Any spec that tries to hit monkeys/ give me a no route matches even though these routes exist No route matches {:controller=>"foo/monkeys", :action=>"update"} I've tried setting both @request.host and request.host to foo.test.host but that doesn't make a blind bit of difference. Maybe RSpec is doing something different with the request, as if I monkey patch the routing with the following I never get the dumps when using RSpec even though both these are called pretty early on in route recognition. module Foo module RouteSetExtensions def self.included(base) base.alias_method_chain :extract_request_environment, :debug base.alias_method_chain :recognize_path, :debug end def recognize_path_with_debug(path, environment={}) puts path puts environment.to_yaml recognize_path_without_debug(path, environment) end def extract_request_environment_with_debug(request) env = extract_request_environment_without_debug(request) puts env.to_yaml env end end end ActionController::Routing::RouteSet.send :include, Foo::RouteSetExtensions So as you can probably tell, I'm out of ideas so I wondered if anyone had any thoughts. _______________________________________________ rspec-users mailing list rspec-users@rubyforge.org http://rubyforge.org/mailman/listinfo/rspec-users