2009-09-26 67 views
0

我試圖運行黃瓜爲我的Rails應用程序,並不斷收到此錯誤:在鐵路的黃瓜運行功能類型錯誤

> superclass mismatch for class Point (TypeError) 

有從這個錯誤中一個巨大的堆棧跟蹤,但它並不指向任何除了缺少的要求外。這裏的痕跡:


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 [email protected] --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/...]

回答

1

我找到了答案,這個問題,這是一個類名衝突與MySQL地理空間插件和我的架構。

我有一個名爲Point的類,一切都很開心。然後我添加了(非常酷的)geoSpatial插件來使用mySQL的地理索引功能。這個插件還定義了一個Point類。

衝突導致黃瓜失敗。

如果您在自己的應用程序中看到此錯誤,請查找重複項!

+2

什麼樣的跛腳庫向全球範圍添加類?這是Module和名稱空間的用途。 – 2009-09-27 15:43:12

+0

我有一個類似的問題(http://stackoverflow.com/questions/1736747/how-to-resolve-rails-model-namespace-collision) - 非常討厭。寶石作者需要更加小心,以避免混淆頂級命名空間。 – zetetic 2010-01-22 16:39:04

+0

是的,但你也需要命名空間創建的任何表,不要忘記。如果寶石配置不夠,應該不成問題。 – Ghoti 2010-07-07 12:23:53