Capybara 2.1 错误未初始化常量 Rails (NameError)

Posted

技术标签:

【中文标题】Capybara 2.1 错误未初始化常量 Rails (NameError)【英文标题】:Capybara 2.1 Error uninitialized constant Rails (NameError) 【发布时间】:2013-08-21 22:19:41 【问题描述】:

我刚刚将 Capybara Gem 从版本 1 升级到了 2.1.0(最新)。基于 Capybara 自述文件,我在 Spork.prefork 块内的 spec_helper.rb 中添加了以下几行

require 'capybara/rspec'
require 'capybara/rails'

但是,我遇到了一个错误

/home/user_1/.rvm/gems/ruby-1.9.3-p392/gems/capybara-2.1.0/lib/capybara/rails.rb:6:in `block (2 levels) in <top (required)>': uninitialized constant Rails (NameError)

为了让水豚正常工作,我错过了什么吗?

【问题讨论】:

可能是您安装了防护并尝试在控制台中使用 > rspec 吗?这是我的情况。 【参考方案1】:

确保首先需要“rspec/rails”:

require 'rspec/rails'

require 'capybara/rspec'
require 'capybara/rails'

如果您首先需要“capybara/rails”,则会收到该错误。

【讨论】:

【参考方案2】:

在您的 spec_helper.rb 文件中,此错误可能是由于在文件代码顶部添加 require 'capybara/rails' 行引起的。

相反,如果您查看自动生成的 spec_helper.rb 文件的一半,您会看到如下内容:

ENV["RAILS_ENV"] ||= 'test'
require File.expand_path("../../config/environment", __FILE__)
require 'rspec/rails'
require 'rspec/autorun'

在这些行之后添加require 'capybara/rails' 行,使其看起来像:

ENV["RAILS_ENV"] ||= 'test'
require File.expand_path("../../config/environment", __FILE__)
require 'rspec/rails'
require 'rspec/autorun'
require 'capybara/rails' #######

(你不需要哈希,那些只是为了突出插入位置)

希望这对您或其他人有所帮助...

【讨论】:

require 'capybara/rspec' 添加到您的spec_helper.rb 文件中足以让我让它工作。我读到了here。【参考方案3】:

这对我来说适用于 capybara -v 3.24

打开 spec_helper.rb 文件。该文件可以在您的应用程序的 spec 文件夹中找到。

在 spec_helper.rb 文件中找到下面的行

ENV['RAILS_ENV'] ||= 'test'
require File.expand_path('../../config/environment', __FILE__)

添加

require 'capybara/rails'

就在下面

ENV['RAILS_ENV'] ||= 'test'
require File.expand_path('../../config/environment', __FILE__)

保存并关闭文件

就是这样

我希望这会有所帮助。

【讨论】:

以上是关于Capybara 2.1 错误未初始化常量 Rails (NameError)的主要内容,如果未能解决你的问题,请参考以下文章

未定义的方法和未初始化的常量错误

路由错误未初始化常量用户

rails 链接表“未初始化的常量”错误

错误 - 未初始化的常量 Project::Ticket

当我需要“fakefs”时出现未初始化的常量 File::NOCTTY 错误

使用 ActiveMerchant::Billing::EwayManagedGateway 的未初始化常量错误