Forum: Ruby on Rails Problems with Testing (Depot) demo app in Agile Rails book

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Bccb0109560e86697e218d905d2e16d7?d=identicon&s=25 Bruce Healy (Guest)
on 2005-12-30 16:24
I've encountered a perplexing problem whilst following along the demo
app in the  "Agile Web Development with Rails" book. Any help would be
greatly appreciated. Here is a brief time line of my tale of woe:-
0. Been programming (business apps) and designing/building DBs for two
decades - but new to both Ruby and Rails (so I apologise in advance if
I've made some really elementary mistake)
1. Purchased the Agile Web Devt with Rails book
2. Been following along with the "Book Depot" sample app - all going
well
3. Had already figured out (with the help of Google, a Mike Clark
article, etc.) that (e.g.) "@version_control_book" used in book didn't
work - and had changed all references to (e.g.)
"products(:version_control_book)"
3. Got to "test_checkout" (in "Testing Controllers" on page 158) - then
all hell broke loose. Many, many errors scrolled past too quickly to
see.
4. Subsequently found that NO tests were working - including ALL the
previous tests which had of course worked just fine before the explosion
5. Googled "test_checkout" and found at least one coherent article that
recommended "GEMS UPDATE" to solve the problem
6. Ran "gems update" - seemed to update a number of Rails components and
reported success after 5 - 10 minutes
7. Unfortunately, ALL tests (including previously working Unit and
Functional tests) now failing uniformly (and with voluminous messages) -
see example below
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
D:\rails\depot>ruby test/unit/order_test.rb
Loaded suite test/unit/order_test
Started
EE
Finished in 0.109 seconds.

  1) Error:
test_truth(OrderTest):
ActiveRecord::StatementInvalid: Mysql::Error: Lost connection to MySQL
server during query: DELETE FROM orders
    c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/active_record/connection_adapters/abstract_adapter.rb:88:in
`log'
    c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/active_record/connection_adapters/mysql_adapter.rb:180:in
`execute'
    c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/active_record/connection_adapters/mysql_adapter.rb:195:in
`delete'
    c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/active_record/fixtures.rb:279:in
`delete_existing_fixtures'
    c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/active_record/fixtures.rb:252:in
`create_fixtures'
    c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/active_record/fixtures.rb:252:in
`each'
    c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/active_record/fixtures.rb:252:in
`create_fixtures'
    c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/active_record/fixtures.rb:251:in
`transaction'
    c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/active_record/fixtures.rb:251:in
`create_fixtures'
    c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/active_record/fixtures.rb:244:in
`silence'
    c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/active_record/fixtures.rb:244:in
`create_fixtures'
    c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/active_record/fixtures.rb:540:in
`load_fixtures'
    c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/active_record/fixtures.rb:487:in
`setup_with_fixtures'
    c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/active_record/fixtures.rb:522:in
`setup'
    c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/active_record/fixtures.rb:521:in
`setup'

  2) Error:
test_truth(OrderTest):
NoMethodError: You have a nil object when you didn't expect it!
You might have expected an instance of Array.
The error occured while evaluating nil.-
    c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/active_record/transactions.rb:112:in
`unlock_mutex'
    c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/active_record/fixtures.rb:509:in
`teardown'

1 tests, 0 assertions, 0 failures, 2 errors
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

8. Worse still, none of the development web pages (e.g. the Store index
at http://localhost:3000/store) work any more. (See example error
message below)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ActiveRecord::StatementInvalid in Store#index

Mysql::Error: Lost connection to MySQL server during query: SELECT *
FROM products WHERE (date_available <= now())  ORDER BY date_available
desc

RAILS_ROOT: ./script/../config/..
Application Trace | Framework Trace | Full Trace

c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/active_record/connection_adapters/abstract_adapter.rb:88:in
`log'
c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/active_record/connection_adapters/mysql_adapter.rb:180:in
`execute'
c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/active_record/connection_adapters/mysql_adapter.rb:322:in
`select'
c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/active_record/connection_adapters/mysql_adapter.rb:171:in
`select_all'
c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/active_record/base.rb:431:in
`find_by_sql'
c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/active_record/base.rb:395:in
`find'
#{RAILS_ROOT}/app/models/product.rb:12:in `salable_items'
#{RAILS_ROOT}/app/controllers/store_controller.rb:6:in `index'

Request
Parameters: None

Show session dump
---
:user_id:
flash: !ruby/hash:ActionController::Flash::FlashHash {}

Response
Headers: {"cookie"=>[], "Cache-Control"=>"no-cache"}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

9. No problem with MySQL server or DBs that I can tell - via MySQL Query
Browser v1.1.17 can still browse all the tables and see all the
previously entered users, products, orders, etc. in the DEV DB

10. For what its worth - here are the specific versions of the key bits
of software involved
	Rails version: 1.0 (now! - after Gems Update - couldn't swear exactly
what version it was prior to that)
	Ruby version:  ruby 1.8.2 (2004-12-25) [i386-mswin32]
	MySQL version: 5.0.15-nt  [Note: all tables created as InnoDB]
	Development box:  Windows XP Pro (SP2) on Dell Inspiron 9300

If anyone could suggest a way out of my predicament I would be eternally
grateful. Otherwise I guess my next step will be to try the "Microsoft
solution" - delete and then re-install all the key bits of software and
hope the problems magically go away!

Thanks,
Bruce Healy  [Bruce DOT Healy AT gmail DOT com]
Cc5feeedd8e886b7be08fddf0812adb9?d=identicon&s=25 Robert-Reinder Nederhoed (Guest)
on 2006-01-08 10:59
Maybe I have a workaround for you.


I had a working minimal rails app. After I added a 'webuser' to MySQL,
and added that user to Rails' database.yml, I encountered exactly this
problem: "lost connection to mysql server during:". With a similar trace
as yours.

In Curt's tutorial on ONLamp
(http://www.onlamp.com/pub/a/onlamp/2005/03/03/rails.html) he mentions
something about MySQL's "password protocol" and leaving your password
blank.

When I reset the webuser password to blank, everything worked as
expected. This is not a solution to be used in production environment,
but it might help you on your way again.

My config: InstantRails 1.0 (Ruby on Rails 1.0 final, Ruby 1.8.4, and
MySQL 4.1.9)


Good luck! Robert-Reinder

--
This topic is locked and can not be replied to.