Ruby on rails 在生成RSpec测试时,如何使用rails中的RSpec和Mongoid防止此错误?

Ruby on rails 在生成RSpec测试时,如何使用rails中的RSpec和Mongoid防止此错误?,ruby-on-rails,mongodb,rspec,mongoid,Ruby On Rails,Mongodb,Rspec,Mongoid,我尝试在一个项目中安装rspec和mongoid(遵循“Rails Deep Dive”一书中的示例),但在尝试从rspec运行生成器时出错 以下是文件: gem 'rails', '3.2.11' gem 'devise', "~> 1.4.2" gem 'mongoid', "~> 2.1.8" gem 'mongoid_spacial', '~> 0.2.13' gem 'haml', '~> 3.1.2' gem 'bson_ext', '~> 1.3.1'

我尝试在一个项目中安装rspec和mongoid(遵循“Rails Deep Dive”一书中的示例),但在尝试从rspec运行生成器时出错

以下是文件:

gem 'rails', '3.2.11'
gem 'devise', "~> 1.4.2"
gem 'mongoid', "~> 2.1.8"
gem 'mongoid_spacial', '~> 0.2.13'
gem 'haml', '~> 3.1.2'
gem 'bson_ext', '~> 1.3.1'
gem 'rails-backbone'

group :assets do
  gem 'sass-rails',   '~> 3.2.3'
  gem 'coffee-rails', '~> 3.2.1'
  gem 'uglifier', '>= 1.0.3'
end

gem 'jquery-rails'
group :test, :development do
  gem 'rspec-rails', '~> 2.6.1'
  gem 'mongoid-rspec', '~> 1.4.4'
  gem 'capybara', '~> 1.0.1'
  gem 'factory_girl_rails', '~> 1.1.0'
  gem 'database_cleaner', '~> 0.6.7'
  gem 'jasmine', '~> 1.0.2.1'
end
我使用生成器生成了一个mongo配置文件,结果如下:

development:
  host: localhost
  database: loccasions_development

test:
  host: localhost
  database: loccasions_test

# set these environment variables on your prod server
production:
  host: <%= ENV['MONGOID_HOST'] %>
  port: <%= ENV['MONGOID_PORT'] %>
  username: <%= ENV['MONGOID_USERNAME'] %>
  password: <%= ENV['MONGOID_PASSWORD'] %>
  database: <%= ENV['MONGOID_DATABASE'] %>

如何修复此问题?

它没有使用bson_ext gem,可能是因为它太旧了,而且显然bson-1.8.2有问题

您可以删除: gem'bson_ext',“~>1.3.1” 然后尝试bundle安装(默认情况下,这可能会安装bson_ext)

或更改: gem'bson_ext',“~>1.3.1” 到 gem“bson_ext”


并对bson_ext进行捆绑升级(这将强制并升级到bson_ext)

我也遇到了同样的问题。我使用下面给出的所有宝石的头部,并添加了mongo_ext(我认为它没有改变任何事情):

我重新运行mongoid生成器

rails g mongoid:config
为了重新创建一个合适的mongoid.yml,然后重新创建rspec安装程序

rails g rspec:install
就这些。我使用的gems版本有:

bson_ext (1.8.2)
  bson (~> 1.8.2)

mongo_ext (0.19.3)
mongoid (3.0.21)
  activemodel (~> 3.1)
  moped (~> 1.2)
  origin (~> 1.0)

mongoid-rspec (1.6.0)
  mongoid (>= 3.0.1)
  rake
  rspec (>= 2.9)
mongoid_spacial (0.2.16)
  activesupport (~> 3.0)
  mongoid (>= 2.3.0)
然后评论出来

config.use_transactional_fixtures = true

config.fixture_path = "#{::Rails.root}/spec/fixtures"
在spec_helper.rb中

bson_ext (1.8.2)
  bson (~> 1.8.2)

mongo_ext (0.19.3)
mongoid (3.0.21)
  activemodel (~> 3.1)
  moped (~> 1.2)
  origin (~> 1.0)

mongoid-rspec (1.6.0)
  mongoid (>= 3.0.1)
  rake
  rspec (>= 2.9)
mongoid_spacial (0.2.16)
  activesupport (~> 3.0)
  mongoid (>= 2.3.0)
config.use_transactional_fixtures = true

config.fixture_path = "#{::Rails.root}/spec/fixtures"