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

DEfusion david.spurr at gmail.com
Tue Nov 10 18:59:51 EST 2009


Okay I've managed to re-create my original problem by trying to use
params_from to verify the routing (which was another area I was
experiencing problems with before).

Note each one of the routes I'm defining here all return fine in the
browser, they hit the appropriate controller and run the show action,
however as you can see by the comments 2 of the specs fail to find the
routes defined.

http://gist.github.com/231408

-D

On Nov 10, 11:25 pm, DEfusion <david.sp... at gmail.com> wrote:
> 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
>
> _______________________________________________
> rspec-users mailing list
> rspec-us... at rubyforge.orghttp://rubyforge.org/mailman/listinfo/rspec-users


More information about the rspec-users mailing list