2013-09-01 65 views
10

Tôi đang theo ruby ​​Michael Hartl trên đường ray hướng dẫn để kiểm tra các ứng dụng mẫu (3.2.1 Kiểm tra theo định hướng phát triển), nhưng tôi nhận được sau lỗi sau khi nhập bundle exec rspec spec/requests/static_pages_spec.rbbó exec rspec đặc tả/yêu cầu/static_pages_spec.rb từ hướng dẫn Hartl của không hoạt động

/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' 

Dưới đây là đoạn code từ spec/requests/static_pages_spec file:

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

Tôi đã tìm kiếm giải pháp, nhưng đã không tìm thấy một. Hãy ghi nhớ rằng tôi mới để Ruby on Rails và phát triển web.

+2

tôi sẽ đoán bạn đang thiếu một viên ngọc gọi là "zip", mà lẽ ra phải được cài đặt cùng với tài xế selen-web, nhưng đôi khi những điều này không phải là hoàn hảo.Thử thêm "gem 'zip'" vào nhóm thử nghiệm của bạn, chạy lại gói cài đặt –

+1

@NeilSlater Đã hoạt động! Cảm ơn rất nhiều. –

+1

Vì không có câu trả lời nào nên tôi trả lời câu hỏi của riêng mình để đóng cuộc thảo luận? –

Trả lời

13

Các thông báo lỗi:

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

là đề cập đến một viên ngọc mất tích gọi là "rubyzip". Nó cần phải được cài đặt bởi bundler cùng với tài xế selen-web, nhưng đôi khi những điều này không phải là hoàn hảo. Trong trường hợp này, phiên bản mới nhất của "rubyzip" viên ngọc đã thay đổi cấu trúc thư viện, vì vậy 'zip/zip' không tồn tại. Bundler sẽ theo mặc định cài đặt phiên bản mới nhất, đó là lý do không có lỗi trên cài đặt, nhưng sẽ có một lỗi khi bạn cố gắng chạy dự án, vì selenium-webdriver danh sách phụ thuộc không nhận thức được sự khác biệt.

Thử thêm gem 'rubyzip', '< 1.0.0' vào nhóm thử nghiệm của bạn và chạy lại bundle install.


vấn đề này dường như được gây ra bởi một cập nhật cho các rubyzip đá quý, xem https://github.com/rubyzip/rubyzip

Các selenium-webdriver đá quý có thể cần phải cập nhật để phản ánh những thay đổi đó - Tôi đã đăng một vấn đề: https://github.com/vertis/selenium-webdriver/issues/3

+1

Tôi đã xem xét điều này khi nâng cấp một dự án Rails 3 để sử dụng 'rspec-rails 2.14.0' và' capybara 2.1.0' và câu trả lời này đã giải quyết được vấn đề. Cảm ơn nhiều! –

1

Thay đổi

gem 'selenium-webdriver', '2.0.0' 

to

gem 'selenium-webdriver' 

trong bạn Gemfile

4

tôi đã cùng một vấn đề thời gian gần đây và chỉ bằng cách thay đổi phiên bản của đá quý

gem 'selenium-webdriver', '2.0.0' 

đến mới nhất:

gem 'selenium-webdriver', '2.35.1' 

nó cố định nó ! Không cần phải cài đặt gem rubyzip.

+1

giống ở đây. làm việc như người ở. – nfriend21