2012-01-06 60 views
7

我一直在我的應用程序中使用黃瓜,這是一個軌道2.2.2應用程序運行在紅寶石1.8.6(升級不是選項現在)。黃瓜已經很好了,現在我正在嘗試使用水豚。我已經安裝了capybara (1.1.1)寶石,並將require 'capybara/rails'放入我的features/support/env.rb file「要求」水豚/鐵軌「」給「未初始化的常量Rack :: Builder」

現在,當我運行黃瓜,我得到這個錯誤:

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 

這裏的示數文件:

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

因此,4號線與Rack::Builder.new線產生錯誤。但爲什麼?有任何想法嗎?我已經安裝了Rack Gem。

謝謝,最大

+0

有一個類似的問題,只要我添加spec/spec_helper.rb行要求'水豚/鋼軌'我得到錯誤消息'/vendor/rails/activesupport/lib/active_support/dependencies.rb:445:在'load_missing_constant':未初始化的常量Rack :: Builder(NameError)' – hebe 2012-01-28 13:41:43

+0

Uggrading to 1.8.7不是一個選項,還是1.9/2.0?它可能會解決你的問題。 – fotanus 2013-08-15 21:15:26

回答

1

您是否使用了黃瓜護欄寶石?

說,既可以使用寶石,或者,如果your're不使用軌道,把這兩行:

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

這不是一個黃瓜測試賽跑者,因此這個答案並沒有幫助我。 – satyajit 2013-08-09 22:31:24

3

嘗試features/support/env.rbrequire 'capybara/rails'前添加require 'rack/builder'。低於2.3的Rails版本不會在內部使用Rack,因此Rack :: Builder不會像capybara似乎假設的那樣加載。

0

嘗試了這一點

gem install rack 

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

架::生成器機架庫中定義。

+0

你能否詳細說明一下? – Paul 2013-08-15 05:55:42

+0

@ Rack,Rack :: Builder在機架庫中定義。 – 2013-08-17 20:42:56

相關問題