Bruce Healy
2005-Dec-30 15:24 UTC
Problems with Testing (Depot) demo app in Agile Rails book
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]
--
Posted via http://www.ruby-forum.com/.
Robert-Reinder Nederhoed
2006-Jan-08 09:59 UTC
[Rails] Re: Problems with Testing [...] lost connection
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 -- -- Posted via http://www.ruby-forum.com/.