Issues implementing Rspec with Rails3 from tutorial

Hi,

I am a newbie to Rails 3 and Rspec. Kindly excuse my being a novice.

I am trying to implement RSpec with Rails 3. I am using Rails 3.0.3 with
Ruby 1.9.2 on Ubuntu 10.04 os. I am using rspec 2.5 gem and rspec-rails
2.5 gem.

I am referring to the following tutorial:-

http://www.railsfire.com/article/rspec-behaviour-driven-development-testing-framework

This tutorial is implemented on Rails 2.x with an older version of rspec
and rspec-rails.

I tried to implement exactly the same tutorial with my
configuration, but I have run into some issues. I am unable to figure
out what I must have done wrong.

I am sure about one thing that I am not using the rails_scaffold
generator as used in this tutorial. Instead of using the
rails_scaffold generator, I made use of the following command rails g scaffold post title:string body:text
I don’t seem to have it(rspec_scaffold) in my list of generators which
as part of Rails 3 and the additional ones that will come with Rspec.

The error I am getting is :-

mohnish@mohnish-desktop:~/rails_testing/10Mar11/rspec_demo5$ rake

spec
(in /home/mohnish/rails_testing/10Mar11/rspec_demo5)
rake aborted!
You have a nil object when you didn’t expect it!
You might have expected an instance of ActiveRecord::Base.
The error occurred while evaluating nil.[]

(See full trace by running task with --trace)
mohnish@mohnish-desktop:~/rails_testing/10Mar11/rspec_demo5$ rake

spec --trace
(in /home/mohnish/rails_testing/10Mar11/rspec_demo5)
** Invoke spec (first_time)
** Invoke db:test:prepare (first_time)
** Invoke db:abort_if_pending_migrations (first_time)
** Invoke environment (first_time)
** Execute environment
** Execute db:abort_if_pending_migrations
** Execute db:test:prepare
** Invoke db:test:load (first_time)
** Invoke db:test:purge (first_time)
** Invoke environment
** Execute db:test:purge
rake aborted!
You have a nil object when you didn’t expect it!
You might have expected an instance of ActiveRecord::Base.
The error occurred while evaluating nil.[]
/home/mohnish/.rvm/gems/ruby-1.9.2-p180/gems/activerecord-3.0.3/lib/active_record/railties/databases.rake:429:in
block (3 levels) in <top (required)>' /home/mohnish/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake.rb:636:in call’
/home/mohnish/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake.rb:636:in
block in execute' /home/mohnish/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake.rb:631:in each’
/home/mohnish/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake.rb:631:in
execute' /home/mohnish/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake.rb:597:in block in invoke_with_call_chain’
/home/mohnish/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/monitor.rb:201:in
mon_synchronize' /home/mohnish/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake.rb:590:in invoke_with_call_chain’
/home/mohnish/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake.rb:607:in
block in invoke_prerequisites' /home/mohnish/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake.rb:604:in each’
/home/mohnish/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake.rb:604:in
invoke_prerequisites' /home/mohnish/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake.rb:596:in block in invoke_with_call_chain’
/home/mohnish/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/monitor.rb:201:in
mon_synchronize' /home/mohnish/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake.rb:590:in invoke_with_call_chain’
/home/mohnish/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake.rb:583:in
invoke' /home/mohnish/.rvm/gems/ruby-1.9.2-p180/gems/activerecord-3.0.3/lib/active_record/railties/databases.rake:460:in block (3 levels) in <top (required)>’
/home/mohnish/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake.rb:636:in
call' /home/mohnish/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake.rb:636:in block in execute’
/home/mohnish/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake.rb:631:in
each' /home/mohnish/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake.rb:631:in execute’
/home/mohnish/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake.rb:597:in
block in invoke_with_call_chain' /home/mohnish/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/monitor.rb:201:in mon_synchronize’
/home/mohnish/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake.rb:590:in
invoke_with_call_chain' /home/mohnish/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake.rb:607:in block in invoke_prerequisites’
/home/mohnish/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake.rb:604:in
each' /home/mohnish/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake.rb:604:in invoke_prerequisites’
/home/mohnish/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake.rb:596:in
block in invoke_with_call_chain' /home/mohnish/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/monitor.rb:201:in mon_synchronize’
/home/mohnish/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake.rb:590:in
invoke_with_call_chain' /home/mohnish/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake.rb:583:in invoke’
/home/mohnish/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake.rb:2051:in
invoke_task' /home/mohnish/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake.rb:2029:in block (2 levels) in top_level’
/home/mohnish/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake.rb:2029:in
each' /home/mohnish/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake.rb:2029:in block in top_level’
/home/mohnish/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake.rb:2068:in
standard_exception_handling' /home/mohnish/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake.rb:2023:in top_level’
/home/mohnish/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake.rb:2001:in
block in run' /home/mohnish/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake.rb:2068:in standard_exception_handling’
/home/mohnish/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake.rb:1998:in
run' /home/mohnish/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/bin/rake:31:in <top (required)>’
/home/mohnish/.rvm/gems/ruby-1.9.2-p180/bin/rake:19:in load' /home/mohnish/.rvm/gems/ruby-1.9.2-p180/bin/rake:19:in
mohnish@mohnish-desktop:~/rails_testing/10Mar11/rspec_demo5$

Any suggestions on what I must be doing wrong and how to fix the same.
Kindly help.

Thank you very much.

Mohnish

Hard to tell without looking at the state if your rails app or the
specs. But, it looks like it might be your Model. Try loading the
rails console in test (“rails console test”), and see if you can create
and save the model. Also, I assume “rake db:migrate” ran without issue
as well?

If that’s all good, please post your spec.

Brian

Brian Ledsworth wrote in post #987662:

Mohnish

Hard to tell without looking at the state if your rails app or the
specs. But, it looks like it might be your Model. Try loading the
rails console in test (“rails console test”), and see if you can create
and save the model. Also, I assume “rake db:migrate” ran without issue
as well?

If that’s all good, please post your spec.

Brian

Hi Brian,

I made a fundamental mistake, I realized that I always made use of rake
db:create, and rake db:migrate. This would set things for me with
Development Environment. For the test enviroment, I had to use rake
db:test:prepare or rake db:migrate with appropriate syntax to reflect
the migrations in the Test Environment.

Thank you for your response and attempt to help…

Its appreciated…:slight_smile: