2012-01-06 20 views
7

Tôi đã sử dụng dưa chuột trong ứng dụng của tôi, đó là một đường ray 2.2.2 ứng dụng chạy trong ruby ​​1.8.6 (nâng cấp không phải là một tùy chọn ngay bây giờ). Dưa chuột đã ổn, bây giờ tôi đang cố gắng sử dụng Capybara. Tôi đã cài đặt viên đá quý capybara (1.1.1) và đặt dòng require 'capybara/rails' vào số features/support/env.rb file của tôi."yêu cầu 'capybara/rails'" cho "uninitialized liên tục Rack :: Builder"

Bây giờ, khi tôi chạy dưa chuột, tôi nhận được lỗi này:

Using the default profile... 
uninitialized constant Rack::Builder (NameError) 
/home/max/.rvm/gems/[email protected]/gems/activesupport-2.2.2/lib/active_support/dependencies.rb:445:in `load_missing_constant' 
/home/max/.rvm/gems/[email protected]/gems/activesupport-2.2.2/lib/active_support/dependencies.rb:77:in `const_missing' 
/home/max/.rvm/gems/[email protected]/gems/capybara-1.1.1/lib/capybara/rails.rb:4 
/home/max/.rvm/rubies/ruby-1.8.6-p420/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:36:in `gem_original_require' 
/home/max/.rvm/rubies/ruby-1.8.6-p420/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:36:in `require' 
/home/max/.rvm/gems/[email protected]/gems/activesupport-2.2.2/lib/active_support/dependencies.rb:155:in `require' 
/home/max/work/charanga/elearn_container/elearn/features/support/env.rb:10 
/home/max/.rvm/gems/[email protected]/gems/cucumber-1.1.1/bin/../lib/cucumber/rb_support/rb_language.rb:143:in `load' 
/home/max/.rvm/gems/[email protected]/gems/cucumber-1.1.1/bin/../lib/cucumber/rb_support/rb_language.rb:143:in `load_code_file' 
/home/max/.rvm/gems/[email protected]/gems/cucumber-1.1.1/bin/../lib/cucumber/runtime/support_code.rb:171:in `load_file' 
/home/max/.rvm/gems/[email protected]/gems/cucumber-1.1.1/bin/../lib/cucumber/runtime/support_code.rb:83:in `load_files!' 
/home/max/.rvm/gems/[email protected]/gems/cucumber-1.1.1/bin/../lib/cucumber/runtime/support_code.rb:82:in `each' 
/home/max/.rvm/gems/[email protected]/gems/cucumber-1.1.1/bin/../lib/cucumber/runtime/support_code.rb:82:in `load_files!' 
/home/max/.rvm/gems/[email protected]/gems/cucumber-1.1.1/bin/../lib/cucumber/runtime.rb:137:in `load_step_definitions' 
/home/max/.rvm/gems/[email protected]/gems/cucumber-1.1.1/bin/../lib/cucumber/runtime.rb:39:in `run!' 
/home/max/.rvm/gems/[email protected]/gems/cucumber-1.1.1/bin/../lib/cucumber/cli/main.rb:43:in `execute!' 
/home/max/.rvm/gems/[email protected]/gems/cucumber-1.1.1/bin/../lib/cucumber/cli/main.rb:20:in `execute' 
/home/max/.rvm/gems/[email protected]/gems/cucumber-1.1.1/bin/cucumber:14 
/home/max/.rvm/gems/[email protected]/bin/cucumber:19:in `load' 
/home/max/.rvm/gems/[email protected]/bin/cucumber:19 

Dưới đây là file erroring:

#/home/max/.rvm/gems/[email protected]/gems/capybara-1.1.1/lib/capybara/rails.rb 
require 'capybara' 
require 'capybara/dsl' 

Capybara.app = Rack::Builder.new do 
    map "/" do 
    if Rails.version.to_f >= 3.0 
     run Rails.application 
    else # Rails 2 
     use Rails::Rack::Static 
     run ActionController::Dispatcher.new 
    end 
    end 
end.to_app 

Capybara.asset_root = Rails.root.join('public') 
Capybara.save_and_open_page_path = Rails.root.join('tmp/capybara') 

Vì vậy, dòng 4 đang tạo ra các lỗi với dòng Rack::Builder.new. Nhưng tại sao? Ý tưởng nào? Tôi đã cài đặt gem Rack.

cảm ơn, tối đa

+0

Có vấn đề tương tự, ngay sau khi tôi thêm vào spec/spec_helper.rb dòng yêu cầu 'capybara/rails' tôi nhận được thông báo lỗi '/vendor/rails/activesupport/lib/active_support/dependencies.rb:445: trong 'load_missing_constant ': Giá trị không đổi được cố định :: Builder (NameError)' – hebe

+0

Uggrading to 1.8.7 Không phải là một tùy chọn, hay là 1.9/2.0? Nó có thể giải quyết vấn đề của bạn. – fotanus

Trả lời

1

Bạn đã sử dụng đá quý dưa chuột?

nói, hoặc là sử dụng đá quý hoặc, nếu your're không sử dụng đường ray, đưa cả những dòng này trong:

require 'capybara/cucumber' 
Capybara.app = MyRackApp 
+0

Đây không phải là nhân vật thử nghiệm dưa chuột, do đó câu trả lời này không giúp tôi. – satyajit

3

Hãy thử thêm require 'rack/builder' trước require 'capybara/rails' trong features/support/env.rb. Rails phiên bản thấp hơn 2,3 không sử dụng Rack nội bộ và do đó Rack :: Builder sẽ không được nạp như capybara có vẻ là giả định.

0

thử này ra

gem install rack 

    require 'rack' # in features/support/env.rb before every require 

Kệ :: Builder được định nghĩa trong thư viện rack.

+0

Bạn có thể xây dựng? – Paul

+0

@Paul, Rack :: Builder được định nghĩa trong thư viện rack. –

Các vấn đề liên quan