[rspec-users] Un-recognised routes that do exist, using namespaces & subdomain checking

DEfusion david.spurr at gmail.com
Tue Nov 10 18:25:02 EST 2009


Now that is weird. I tried to make an isolated example for you and
that worked fine. So I put un-commented my spec bit by bit and it
works fine.

I'm sure I've had this problem before. If I do re-create it I'll post
more details here.

=D

On Nov 10, 10:48 pm, David Chelimsky <dchelim... at gmail.com> wrote:
> On Tue, Nov 10, 2009 at 2:25 PM, DEfusion <david.sp... at gmail.com> wrote:
> > 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.
>
> Please post the failing spec and the exact failure message.
>
> Thx,
> David
>
> _______________________________________________
> rspec-users mailing list
> rspec-us... at rubyforge.orghttp://rubyforge.org/mailman/listinfo/rspec-users


More information about the rspec-users mailing list