2013-09-01 5 views
10

Podążam za tutorialem ruby ​​na rails Michaela Hartla, by przetestować przykładową aplikację (3.2.1 Rozwój oparty na testach), ale dostaję następujący błąd po wpisaniu bundle exec rspec spec/requests/static_pages_spec.rbpakiet exec rspec spec/requests/static_pages_spec.rb z tutoriala Hartla nie działa

/home/rahul/.rvm/gems/[email protected]_rails_4_0/gems/selenium-webdriver-2.0.0/lib/selenium/webdriver/common/zipper.rb:1:in `require': cannot load such file -- zip/zip (LoadError) 
    from /home/rahul/.rvm/gems/[email protected]_rails_4_0/gems/selenium-webdriver-2.0.0/lib/selenium/webdriver/common/zipper.rb:1:in `<top (required)>' 
    from /home/rahul/.rvm/gems/[email protected]_rails_4_0/gems/selenium-webdriver-2.0.0/lib/selenium/webdriver/common.rb:9:in `require' 
    from /home/rahul/.rvm/gems/[email protected]_rails_4_0/gems/selenium-webdriver-2.0.0/lib/selenium/webdriver/common.rb:9:in `<top (required)>' 
    from /home/rahul/.rvm/gems/[email protected]_rails_4_0/gems/selenium-webdriver-2.0.0/lib/selenium/webdriver.rb:29:in `require' 
    from /home/rahul/.rvm/gems/[email protected]_rails_4_0/gems/selenium-webdriver-2.0.0/lib/selenium/webdriver.rb:29:in `<top (required)>' 
    from /home/rahul/.rvm/gems/[email protected]_rails_4_0/gems/selenium-webdriver-2.0.0/lib/selenium-webdriver.rb:1:in `require' 
    from /home/rahul/.rvm/gems/[email protected]_rails_4_0/gems/selenium-webdriver-2.0.0/lib/selenium-webdriver.rb:1:in `<top (required)>' 
    from /home/rahul/.rvm/gems/[email protected]/gems/bundler-1.3.5/lib/bundler/runtime.rb:72:in `require' 
    from /home/rahul/.rvm/gems/[email protected]/gems/bundler-1.3.5/lib/bundler/runtime.rb:72:in `block (2 levels) in require' 
    from /home/rahul/.rvm/gems/[email protected]/gems/bundler-1.3.5/lib/bundler/runtime.rb:70:in `each' 
    from /home/rahul/.rvm/gems/[email protected]/gems/bundler-1.3.5/lib/bundler/runtime.rb:70:in `block in require' 
    from /home/rahul/.rvm/gems/[email protected]/gems/bundler-1.3.5/lib/bundler/runtime.rb:59:in `each' 
    from /home/rahul/.rvm/gems/[email protected]/gems/bundler-1.3.5/lib/bundler/runtime.rb:59:in `require' 
    from /home/rahul/.rvm/gems/[email protected]/gems/bundler-1.3.5/lib/bundler.rb:132:in `require' 
    from /home/rahul/Downloads/rails_projects/sample_app/config/application.rb:12:in `<top (required)>' 
    from /home/rahul/Downloads/rails_projects/sample_app/config/environment.rb:2:in `require' 
    from /home/rahul/Downloads/rails_projects/sample_app/config/environment.rb:2:in `<top (required)>' 
    from /home/rahul/Downloads/rails_projects/sample_app/spec/spec_helper.rb:3:in `require' 
    from /home/rahul/Downloads/rails_projects/sample_app/spec/spec_helper.rb:3:in `<top (required)>' 
    from /home/rahul/Downloads/rails_projects/sample_app/spec/requests/static_pages_spec.rb:1:in `require' 
    from /home/rahul/Downloads/rails_projects/sample_app/spec/requests/static_pages_spec.rb:1:in `<top (required)>' 
    from /home/rahul/.rvm/gems/[email protected]_rails_4_0/gems/rspec-core-2.13.1/lib/rspec/core/configuration.rb:819:in `load' 
    from /home/rahul/.rvm/gems/[email protected]_rails_4_0/gems/rspec-core-2.13.1/lib/rspec/core/configuration.rb:819:in `block in load_spec_files' 
    from /home/rahul/.rvm/gems/[email protected]_rails_4_0/gems/rspec-core-2.13.1/lib/rspec/core/configuration.rb:819:in `each' 
    from /home/rahul/.rvm/gems/[email protected]_rails_4_0/gems/rspec-core-2.13.1/lib/rspec/core/configuration.rb:819:in `load_spec_files' 
    from /home/rahul/.rvm/gems/[email protected]_rails_4_0/gems/rspec-core-2.13.1/lib/rspec/core/command_line.rb:22:in `run' 
    from /home/rahul/.rvm/gems/[email protected]_rails_4_0/gems/rspec-core-2.13.1/lib/rspec/core/runner.rb:80:in `run' 
    from /home/rahul/.rvm/gems/[email protected]_rails_4_0/gems/rspec-core-2.13.1/lib/rspec/core/runner.rb:17:in `block in autorun' 

Oto kod z spec/requests/static_pages_spec pliku:

require 'spec_helper' 

describe "Static pages" do 

    describe "Home page" do 

    it "should have the content 'Sample App' " do 
     visit '/static_pages/home' 
     expect(page).to have_content('Sample App') 
    end 

    end 

end 

Gemfile:

source 'https://rubygems.org' 
ruby '2.0.0' 
#ruby-gemset=railstutorial_rails_4_0 

gem 'rails', '4.0.0' 

group :development, :test do 
    gem 'sqlite3', '1.3.7' 
    gem 'rspec-rails', '2.13.1' 
end 

group :test do 
    gem 'selenium-webdriver', '2.0.0' 
    gem 'capybara', '2.1.0' 
end 

gem 'sass-rails', '4.0.0' 
gem 'uglifier', '2.1.1' 
gem 'coffee-rails', '4.0.0' 
gem 'jquery-rails', '2.2.1' 
gem 'turbolinks', '1.1.1' 
gem 'jbuilder', '1.0.2' 

group :doc do 
    gem 'sdoc', '0.3.20', require: false 
end 

group :production do 
    gem 'pg', '0.15.1' 
    gem 'rails_12factor', '0.0.2' 
end 

routes.rb:

SampleApp::Application.routes.draw do 
    get "static_pages/home" 
    get "static_pages/help" 
end 

OS: Ubuntu 13.04

byłem szukając rozwiązania, ale nie znalazłem jeden. Proszę pamiętać, że jestem nowy w Ruby on Rails i tworzeniu stron internetowych.

+2

Przypuszczam, że brakuje jakiegoś klejnotu zwanego "zip", który powinien był zostać zainstalowany wraz ze sterownikami selen-web, ale czasami te rzeczy nie są idealne.Spróbuj dodać "klejnotowy zip" do swojej grupy testowej, ponownie uruchom instalację pakietu –

+1

@NeilSlater To zadziałało! Wielkie dzięki. –

+1

Ponieważ nie ma odpowiedzi, powinienem odpowiedzieć na moje własne pytanie, aby zamknąć dyskusję? –

Odpowiedz

13

Komunikat o błędzie:

in `require': cannot load such file -- zip/zip (LoadError) 

odnosi się do brakującej gem nazwie "rubyzip". Powinien on zostać zainstalowany przez bundler wraz ze sterownikami selen-web, ale czasami te rzeczy nie są idealne. W tym przypadku najnowsza wersja klejnotu "rubyzip" zmieniła strukturę biblioteki, więc "zip/zip" nie istnieje. Bundler domyślnie zainstaluje najnowszą wersję, dlatego nie ma błędu podczas instalacji, ale wystąpi błąd podczas próby uruchomienia projektu, ponieważ lista zależności selenium-webdriver nie jest świadoma różnicy.

Spróbuj dodać gem 'rubyzip', '< 1.0.0' do grupy testowej i ponownie uruchom bundle install.


Problem wydaje się być spowodowana aktualizacją do rubyzip gem, patrz https://github.com/rubyzip/rubyzip

selenium-webdriver klejnot prawdopodobnie wymaga aktualizacji w celu uwzględnienia tych zmian - Mam zalogowany problem: https://github.com/vertis/selenium-webdriver/issues/3

+1

Natknąłem się na to przy aktualizacji projektu Rails 3 do używania 'rspec-rails 2.14.0' i' capybara 2.1.0', a ta odpowiedź rozwiązała problem. Wielkie dzięki! –

1

Zmień

gem 'selenium-webdriver', '2.0.0' 

do

gem 'selenium-webdriver' 

w Gemfile

4

miałem ten sam problem niedawno i po prostu zmieniając wersję gem

gem 'selenium-webdriver', '2.0.0' 

do ostatniego:

gem 'selenium-webdriver', '2.35.1' 

to naprawił ! Nie trzeba instalować klejnotu rubyzip.

+1

to samo tutaj. pracował jak urok. – nfriend21