2010-03-19 3 views
3

среды/cucumber.rb:Огурцы не может найти установленный Gems

... 
# gem dependencies 
config.gem 'cucumber-rails', :lib => false, :version => '>=0.3.0' unless File.directory?(File.join(Rails.root, 'vend 
config.gem 'database_cleaner', :lib => false, :version => '>=0.5.0' unless File.directory?(File.join(Rails.root, 'vend 
config.gem 'webrat',   :lib => false, :version => '>=0.7.0' unless File.directory?(File.join(Rails.root, 'vend 

config.gem 'spork',   :lib => false, :version => '>=0.7.5' unless File.directory?(File.join(Rails.root, 'vend 

config.gem 'factory_girl', :source => 'http://gemcutter.org' 
config.gem 'selenium-client', :lib => false 
config.gem 'Selenium', :lib => false 
config.gem 'rspec', :lib => 'spec' 
config.gem 'rspec-rails', :lib => 'spec/rails' 
config.gem 'test-unit', :lib => false 

Запуск огурец дает недостающую жемчужин ошибку:

artem:~/projects/food4feed (master)$ cucumber 
... 
no such file to load -- Selenium 
/home/artem/.rvm/gems/ruby-1.9.1-p378/gems/polyglot-0.3.0/lib/polyglot.rb:65:in `require' 
/home/artem/.rvm/gems/ruby-1.9.1-p378/gems/activesupport-2.3.5/lib/active_support/dependencies.rb:158:in `require' 
/home/artem/.rvm/gems/ruby-1.9.1-p378/gems/rspec-rails-1.3.2/lib/spec/rails.rb:13:in `<top (required)>' 
/home/artem/.rvm/gems/ruby-1.9.1-p378/gems/polyglot-0.3.0/lib/polyglot.rb:65:in `require' 
/home/artem/.rvm/gems/ruby-1.9.1-p378/gems/polyglot-0.3.0/lib/polyglot.rb:65:in `require' 
/home/artem/.rvm/gems/ruby-1.9.1-p378/gems/activesupport-2.3.5/lib/active_support/dependencies.rb:158:in `require' 
/home/artem/.rvm/gems/ruby-1.9.1-p378/gems/rails-2.3.5/lib/rails/gem_dependency.rb:208:in `load' 
/home/artem/.rvm/gems/ruby-1.9.1-p378/gems/rails-2.3.5/lib/initializer.rb:307:in `block in load_gems' 
/home/artem/.rvm/gems/ruby-1.9.1-p378/gems/rails-2.3.5/lib/initializer.rb:307:in `each' 
/home/artem/.rvm/gems/ruby-1.9.1-p378/gems/rails-2.3.5/lib/initializer.rb:307:in `load_gems' 
/home/artem/.rvm/gems/ruby-1.9.1-p378/gems/rails-2.3.5/lib/initializer.rb:169:in `process' 
/home/artem/.rvm/gems/ruby-1.9.1-p378/gems/rails-2.3.5/lib/initializer.rb:113:in `run' 
/home/artem/projects/food4feed/config/environment.rb:9:in `<top (required)>' 
/home/artem/.rvm/gems/ruby-1.9.1-p378/gems/polyglot-0.3.0/lib/polyglot.rb:65:in `require' 
/home/artem/.rvm/gems/ruby-1.9.1-p378/gems/polyglot-0.3.0/lib/polyglot.rb:65:in `require' 
/home/artem/projects/food4feed/features/support/env.rb:12:in `block in <top (required)>' 
/home/artem/.rvm/gems/ruby-1.9.1-p378/gems/spork-0.8.1/lib/spork.rb:23:in `prefork' 
/home/artem/projects/food4feed/features/support/env.rb:10:in `<top (required)>' 
/home/artem/.rvm/gems/ruby-1.9.1-p378/gems/polyglot-0.3.0/lib/polyglot.rb:65:in `require' 
/home/artem/.rvm/gems/ruby-1.9.1-p378/gems/polyglot-0.3.0/lib/polyglot.rb:65:in `require' 
/home/artem/.rvm/gems/ruby-1.9.1-p378/gems/cucumber-0.6.3/lib/cucumber/rb_support/rb_language.rb:124:in `load_code_file' 
/home/artem/.rvm/gems/ruby-1.9.1-p378/gems/cucumber-0.6.3/lib/cucumber/step_mother.rb:85:in `load_code_file' 
/home/artem/.rvm/gems/ruby-1.9.1-p378/gems/cucumber-0.6.3/lib/cucumber/step_mother.rb:77:in `block in load_code_files' 
/home/artem/.rvm/gems/ruby-1.9.1-p378/gems/cucumber-0.6.3/lib/cucumber/step_mother.rb:76:in `each' 
/home/artem/.rvm/gems/ruby-1.9.1-p378/gems/cucumber-0.6.3/lib/cucumber/step_mother.rb:76:in `load_code_files' 
/home/artem/.rvm/gems/ruby-1.9.1-p378/gems/cucumber-0.6.3/lib/cucumber/cli/main.rb:48:in `execute!' 
/home/artem/.rvm/gems/ruby-1.9.1-p378/gems/cucumber-0.6.3/lib/cucumber/cli/main.rb:20:in `execute' 
/home/artem/.rvm/gems/ruby-1.9.1-p378/gems/cucumber-0.6.3/bin/cucumber:8:in `<top (required)>' 
/home/artem/.rvm/gems/ruby-1.9.1-p378/bin/cucumber:19:in `load' 
/home/artem/.rvm/gems/ruby-1.9.1-p378/bin/cucumber:19:in `<main>' 
Missing these required gems: 
    selenium-client 
    Selenium 
    rspec-rails 

You're running: 
    ruby 1.9.1.378 at /home/artem/.rvm/rubies/ruby-1.9.1-p378/bin/ruby 
    rubygems 1.3.5 at /home/artem/.rvm/gems/ruby-1.9.1-p378, /home/artem/.rvm/gems/ruby-1.9.1-p378%global 

Все драгоценные камни, очевидно, есть:

artem:~/projects/food4feed (master)$ gem list | egrep "elenium|rspec|test-unit" 
rspec (1.3.0) 
rspec-rails (1.3.2) 
Selenium (1.1.14) 
selenium-client (1.2.18) 
test-unit (2.0.7) 

Еще более запутанная часть состоит в том, что она только жалуется на некоторые драгоценные камни. factory_girl и rspec не вызывают проблем.

Любая идея, что происходит?


Моя среда:

  • Rails 2.3.5
  • огурца (0.6.3)
  • огурца рельсы (0.3.0)

ответ

2

Хорошо, я это понял (с помощью aslakhellesoy, спасибо!). Когда огурец говорит Missing these required gems, это может также означать Can't load these required gems. Что добавляет весь спектр возможных ошибок.

В этом случае имена драгоценных камней (кроме rspec-rails) не соответствуют соответствующим библиотечным файлам, которые требуются. Например, должно было быть :lib => 'selenium' добавлено к config.gem 'selenium-client'.

Что касается rspec-рельсов, он не смог загрузить из-за неправильной версии тестового блока: Gem::LoadError: RubyGem version error: test-unit(2.0.7 not = 1.2.3). Это помогло бы, если бы огурец сообщал об этой ошибке в первую очередь (я получил ее от необходимости rspec-rails с консоли).

1

ли вы требовать «тестовый блок» где-то в вашем файле config/environment.rb или features/support/env.rb?

Если вы это сделаете, это неправильно. Драгоценный камень тестового блока не имеет файла test. unit, поэтому требуется, чтобы «тестовый блок» всегда терпел неудачу. Попробуйте удалить требуют линии или, по крайней мере, попытаться требовать правильного файла:

требуют «тест/блок»

я не уверен, почему вы пытаетесь явно загрузить тест-блок в любом случае.

+0

'test-unit' является зависимостью для одного из вышеуказанных драгоценных камней. Это только для «граблей»: установите RAILS_ENV = огурец, чтобы установить его. – artemave

+0

КОРРЕКЦИЯ !! КОРРЕКЦИЯ !! 'test-unit' на самом деле не вызывает проблем, поскольку это': lib => false'. Моя ошибка, я думаю, что скопировал неправильную трассировку стека в первую очередь (исправлено). Однако это не меняет вопрос. – artemave

+0

Вы на самом деле указали на правильное направление. Помимо rspec-рельсов, все это касалось несоответствия имени жемчужины/библиотеки. Благодаря! – artemave

Смежные вопросы