2010-03-19 125 views
3

環境/ cucumber.rb:黃瓜找不到安裝寶石

... 
# 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_girlrspec不會導致問題。

任何想法是怎麼回事?


我的環境:

  • 的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-rails,由於測試單元版本錯誤導致無法加載:Gem::LoadError: RubyGem version error: test-unit(2.0.7 not = 1.2.3)。如果黃瓜首先報告了這個錯誤(我從需要從控制檯請求rspec-rails),它會有很大的幫助。

1

你有需要'test-unit'在config/environment.rb或features/support/env.rb文件中的某處?

如果你這樣做,那是錯誤的。測試單元gem沒有test-unit.rb文件,因此要求'test-unit'將始終失敗。儘量去除需要對線路,或者至少嘗試需要正確的文件:

請求「test /單元」

我不知道爲什麼你想無論如何要明確負載測試單元。

+0

'test-unit'是上述其中一個gem的依賴項。它只適用於'rake gems:安裝RAILS_ENV = cucumber'來安裝它。 – artemave 2010-03-22 12:23:34

+0

更正!更正!! 'test-unit'實際上不會引起問題,因爲它是':lib => false'。我的錯,我認爲我首先複製了錯誤的堆棧跟蹤(更正)。但是,這並沒有改變這個問題。 – artemave 2010-03-22 12:32:37

+0

你實際上指出了正確的方向。除了rspec-rails之外,它都是關於gem/library名稱不匹配的。謝謝! – artemave 2010-03-22 16:48:26