On Jun 9, 2011, at 11:03 AM, Daniel wrote: > Hello, > > I'm doing namespace routing based on subdomain, rather than path, so > that http://admin.example.com/pages leads to app/controllers/admin/ > pages_controller.rb. Cucumber is following this fine, but RSpec is > complaining that the requested route doesn't exist even though "rake > routes" shows the route.
It's not that Cucumber gets it wrong and RSpec gets it right. Both tools delegate to Rails: cucumber-rails scenarios and rspec-rails request specs to to rails integration tests; rspec-rails controller specs to rails functional tests. If you did this in an rspec-rails request spec using the same declaration you're using in the cuke scenario, it would pass. If you did it in a rails functional test it would fail. More below. > When I add a standard namespace below the > "scope :admin" block in my routes.rb file, RSpec does recognize the > route, but I don't want path based namespacing. > > The relevant parts of routes.rb, and the spec file follow below, along > with the the RSpec output and the matching line of "rake routes". > > config/routes.rb: > > scope :admin, :as => 'admin', :module => 'admin', :conditions => > { :subdomain => 'admin' } do > resources :pages > end The hash key ^^ you're looking for is :constraints, not :conditions. Change that and it will work, even in a controller spec. The fact that it works in a Cucumber scenario is an accident, and likely due to how the request is being declared in the step definition. If it's something like get admin_pages_path, then it's using rails' routing to generate and recognize the path, so it makes sense that it works. Also, the declaration seems overly complex. You can get what I _think_ you're looking for like this: scope :module => :admin, :constraints => { :subdomain => 'admin' } do resources :pages end HTH, David _______________________________________________ rspec-users mailing list rspec-users@rubyforge.org http://rubyforge.org/mailman/listinfo/rspec-users