R – Type Error running feature in Rail’s Cucumber

cucumbergeospatialruby-on-railstypes

I'm trying to run Cucumber for my Rails application and keep getting this error:

> superclass mismatch for class Point (TypeError)

There's a huge stack trace from this error, but it does not point to anything specific except a missing requirement. Here's the trace:


rake features (in /Users/rob/blue/blue_web)
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby
-I "/Users/rob/.gem/ruby/1.8/gems/cucumber-0.3.102/lib:lib"
"/Users/rob/.gem/ruby/1.8/gems/cucumber-0.3.102/bin/cucumber"
–color –tags ~@wip –strict –format pretty –drb
features/manage_logins.feature
WARNING: No DRb server is running.
Running features locally: superclass
mismatch for class Point (TypeError)
/Users/rob/blue/blue_web/app/models/point.rb:1
/Library/Ruby/Site/1.8/rubygems/custom_require.rb:31:in
gem_original_require'
/Library/Ruby/Site/1.8/rubygems/custom_require.rb:31:in
polyglot_original_require'
/Users/rob/.gem/ruby/1.8/gems/polyglot-0.2.9/lib/polyglot.rb:70:in
require'
/Users/rob/.gem/ruby/1.8/gems/activesupport-2.3.4/lib/active_support/dependencies.rb:158:in
require'
/Users/rob/.gem/ruby/1.8/gems/activesupport-2.3.4/lib/active_support/dependencies.rb:265:in
require_or_load'
/Users/rob/.gem/ruby/1.8/gems/activesupport-2.3.4/lib/active_support/dependencies.rb:224:in
depend_on'
/Users/rob/.gem/ruby/1.8/gems/activesupport-2.3.4/lib/active_support/dependencies.rb:136:in
require_dependency'
/Users/rob/.gem/ruby/1.8/gems/rails-2.3.4/lib/initializer.rb:414:in
load_application_classes'
/Users/rob/.gem/ruby/1.8/gems/rails-2.3.4/lib/initializer.rb:413:in
each'
/Users/rob/.gem/ruby/1.8/gems/rails-2.3.4/lib/initializer.rb:413:in
load_application_classes'
/Users/rob/.gem/ruby/1.8/gems/rails-2.3.4/lib/initializer.rb:411:in
each'
/Users/rob/.gem/ruby/1.8/gems/rails-2.3.4/lib/initializer.rb:411:in
load_application_classes'
/Users/rob/.gem/ruby/1.8/gems/rails-2.3.4/lib/initializer.rb:197:in
process'
/Users/rob/.gem/ruby/1.8/gems/rails-2.3.4/lib/initializer.rb:113:in
send'
/Users/rob/.gem/ruby/1.8/gems/rails-2.3.4/lib/initializer.rb:113:in
run'
/Users/rob/blue/blue_web/config/environment.rb:16
/Library/Ruby/Site/1.8/rubygems/custom_require.rb:31:in
gem_original_require'
/Library/Ruby/Site/1.8/rubygems/custom_require.rb:31:in
polyglot_original_require'
/Users/rob/.gem/ruby/1.8/gems/polyglot-0.2.9/lib/polyglot.rb:70:in
require' ./features/support/env.rb:7
/Library/Ruby/Gems/1.8/gems/spork-0.7.2/lib/spork.rb:14:in
prefork' ./features/support/env.rb:4
/Library/Ruby/Site/1.8/rubygems/custom_require.rb:31:in
gem_original_require'
/Library/Ruby/Site/1.8/rubygems/custom_require.rb:31:in
polyglot_original_require'
/Users/rob/.gem/ruby/1.8/gems/polyglot-0.2.9/lib/polyglot.rb:70:in
require'
/Users/rob/.gem/ruby/1.8/gems/cucumber-0.3.102/bin/../lib/cucumber/rb_support/rb_language.rb:107:in
load_code_file'
/Users/rob/.gem/ruby/1.8/gems/cucumber-0.3.102/bin/../lib/cucumber/rb_support/rb_language.rb:48:in
step_definitions_for'
/Users/rob/.gem/ruby/1.8/gems/cucumber-0.3.102/bin/../lib/cucumber/step_mother.rb:90:in
load_code_file'
/Users/rob/.gem/ruby/1.8/gems/cucumber-0.3.102/bin/../lib/cucumber/step_mother.rb:82:in
load_code_files'
/Users/rob/.gem/ruby/1.8/gems/cucumber-0.3.102/bin/../lib/cucumber/step_mother.rb:81:in
each'
/Users/rob/.gem/ruby/1.8/gems/cucumber-0.3.102/bin/../lib/cucumber/step_mother.rb:81:in
load_code_files'
/Users/rob/.gem/ruby/1.8/gems/cucumber-0.3.102/bin/../lib/cucumber/cli/main.rb:46:in
execute!'
/Users/rob/.gem/ruby/1.8/gems/cucumber-0.3.102/bin/../lib/cucumber/cli/main.rb:24:in
execute'
/Users/rob/.gem/ruby/1.8/gems/cucumber-0.3.102/bin/cucumber:9
rake aborted! Command failed with
status (1):
[/System/Library/Frameworks/Ruby.framework/…]

Best Answer

I found the answer to this problem, it was a class name conflict with the mySQL geoSpatial plug-in and my schema.

I had a class named Point and everything was happy. Then I added (the very cool) geoSpatial plug-in to use mySQL's geo index features. This plug-in also defines a Point class.

The conflict was causing Cucumber to fail.

If you are seeing this error in your own application, look for duplicates!

Related Topic