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'
polyglot_original_require'
/Library/Ruby/Site/1.8/rubygems/custom_require.rb:31:in
/Users/rob/.gem/ruby/1.8/gems/polyglot-0.2.9/lib/polyglot.rb:70:in
require'
require'
/Users/rob/.gem/ruby/1.8/gems/activesupport-2.3.4/lib/active_support/dependencies.rb:158:in
/Users/rob/.gem/ruby/1.8/gems/activesupport-2.3.4/lib/active_support/dependencies.rb:265:in
require_or_load'
depend_on'
/Users/rob/.gem/ruby/1.8/gems/activesupport-2.3.4/lib/active_support/dependencies.rb:224:in
/Users/rob/.gem/ruby/1.8/gems/activesupport-2.3.4/lib/active_support/dependencies.rb:136:in
require_dependency'
load_application_classes'
/Users/rob/.gem/ruby/1.8/gems/rails-2.3.4/lib/initializer.rb:414:in
/Users/rob/.gem/ruby/1.8/gems/rails-2.3.4/lib/initializer.rb:413:in
each'
load_application_classes'
/Users/rob/.gem/ruby/1.8/gems/rails-2.3.4/lib/initializer.rb:413:in
/Users/rob/.gem/ruby/1.8/gems/rails-2.3.4/lib/initializer.rb:411:in
each'
load_application_classes'
/Users/rob/.gem/ruby/1.8/gems/rails-2.3.4/lib/initializer.rb:411:in
/Users/rob/.gem/ruby/1.8/gems/rails-2.3.4/lib/initializer.rb:197:in
process'
send'
/Users/rob/.gem/ruby/1.8/gems/rails-2.3.4/lib/initializer.rb:113:in
/Users/rob/.gem/ruby/1.8/gems/rails-2.3.4/lib/initializer.rb:113:in
run'
gem_original_require'
/Users/rob/blue/blue_web/config/environment.rb:16
/Library/Ruby/Site/1.8/rubygems/custom_require.rb:31:in
/Library/Ruby/Site/1.8/rubygems/custom_require.rb:31:in
polyglot_original_require'
require' ./features/support/env.rb:7
/Users/rob/.gem/ruby/1.8/gems/polyglot-0.2.9/lib/polyglot.rb:70:in
/Library/Ruby/Gems/1.8/gems/spork-0.7.2/lib/spork.rb:14:in
prefork' ./features/support/env.rb:4
gem_original_require'
/Library/Ruby/Site/1.8/rubygems/custom_require.rb:31:in
/Library/Ruby/Site/1.8/rubygems/custom_require.rb:31:in
polyglot_original_require'
require'
/Users/rob/.gem/ruby/1.8/gems/polyglot-0.2.9/lib/polyglot.rb:70:in
/Users/rob/.gem/ruby/1.8/gems/cucumber-0.3.102/bin/../lib/cucumber/rb_support/rb_language.rb:107:in
load_code_file'
step_definitions_for'
/Users/rob/.gem/ruby/1.8/gems/cucumber-0.3.102/bin/../lib/cucumber/rb_support/rb_language.rb:48:in
/Users/rob/.gem/ruby/1.8/gems/cucumber-0.3.102/bin/../lib/cucumber/step_mother.rb:90:in
load_code_file'
load_code_files'
/Users/rob/.gem/ruby/1.8/gems/cucumber-0.3.102/bin/../lib/cucumber/step_mother.rb:82:in
/Users/rob/.gem/ruby/1.8/gems/cucumber-0.3.102/bin/../lib/cucumber/step_mother.rb:81:in
each'
load_code_files'
/Users/rob/.gem/ruby/1.8/gems/cucumber-0.3.102/bin/../lib/cucumber/step_mother.rb:81:in
/Users/rob/.gem/ruby/1.8/gems/cucumber-0.3.102/bin/../lib/cucumber/cli/main.rb:46:in
execute!'
execute'
/Users/rob/.gem/ruby/1.8/gems/cucumber-0.3.102/bin/../lib/cucumber/cli/main.rb:24:in
/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!