Hi there,
in my main view i have a link to the root_path, which converts to
{:controller => "home", :action => :index}
In every spec i run, i get the error:
No route matches {:controller=>"home"}
While if i run the application in development, everything renders
without any problem and is clickable correctly.
Does anybody have any clues as to what i did wrong?
I should add that the rails application is in the process of being
migrated from rails 2.3.11 to rails 3.
I must have overlooked something, but i can’t see what.
Does anybody have any tips?
More information:
If i run
rspec spec/**/*_spec.rb
I suddenly get the same errors as when using rake spec
. So???
rspec spec/controllers/user_controller/*_spec.rb
gives all green, and with the first command those same specs fail ???
without any problem and is clickable correctly.
[EDIT: more findings]
I have done some more digging. The test run perfectly fine in
Rubymine, or if i use the command-line and type
rspec spec/controllers/users_controller/*.spec.rb
But they do not work if I use
rake spec
What is the difference? I have deleted the lib/tasks/rspec.rake
file
(which was generated for rspec1) and i can see that the correct
command is executed:
bundle exec rspec
So I am a bit at a loss here.
I found it! It took my a while, eventually i diffed the log-files that
see what happens differently.
Apparently I have on spec file, where we try to test a baseclass.
Inside that spec we define a new controller that derives
from that baseclass, with a dummy index method.
And also we need the routes, so inside that spec the following code
was to be found:
ActionController::Routing::Routes.draw do |map|
map.connect ':controller/:action/:id'
map.connect ':controller/:action/:id.:format'
end
and somehow this spec was always run first. This effectively clears
the whole routing configuration i guess.
Not sure if this change is caused by rails3 or rspec2, anyway the
majority of my tests are now working, just need to fix this one
test now.