Тип Ошибка при запуске функции в Rail's Cucumber

Я пытаюсь запустить Cucumber для своего приложения Rails и продолжаю получать эту ошибку:

> superclass mismatch for class Point (TypeError)

От этой ошибки есть огромная трассировка стека, но она не указывает ни на что конкретное, кроме отсутствующего требования. Вот след:


функции граблей (в / Users / rob / blue / blue_web) /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby -I "/Users/rob/.gem/ruby/1.8/gems/ огурец-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 ПРЕДУПРЕЖДЕНИЕ: сервер DRb не запущен. Локальный запуск функций: несоответствие суперкласса для класса 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: в 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: в 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: в 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: в 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: в polyglot_original_require' /Users/rob/.gem/ruby/1.8/gems/polyglot-0.2.9/lib/polyglot.rb:70:in require' ./features/sup порт / 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: в 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: в 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: в 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 прервано грабли! Ошибка команды со статусом (1): [/System/Library/Frameworks/Ruby.framework / ...]


person RAVolt    schedule 26.09.2009    source источник


Ответы (1)


Я нашел ответ на эту проблему, это был конфликт имени класса с подключаемым модулем mySQL geoSpatial и моей схемой.

У меня был класс Point, и все было хорошо. Затем я добавил (очень крутой) плагин geoSpatial, чтобы использовать функции геоиндекса mySQL. Этот плагин также определяет класс Point.

Конфликт привел к провалу Cucumber.

Если вы видите эту ошибку в своем приложении, ищите дубликаты!

person RAVolt    schedule 26.09.2009
comment
Что за глупая библиотека добавляет классы в глобальную область видимости? это то, для чего нужны модуль и пространства имен. - person John F. Miller; 27.09.2009
comment
У меня была аналогичная проблема (stackoverflow .com / questions / 1736747 /) - сильно раздражает. Авторам драгоценных камней следует проявлять больше осторожности, чтобы не загромождать пространство имен верхнего уровня. - person zetetic; 22.01.2010
comment
Да, но не забывайте, что вам также потребуется пространство имен для любых созданных таблиц. Не должно быть проблем, если драгоценный камень достаточно настраиваемый. - person Ghoti; 07.07.2010