簡體   English   中英

生成RSpec測試時,如何防止RSpec和Mongoid在導軌中出現此錯誤?

[英]How to Prevent this error with RSpec and Mongoid in rails when generating RSpec tests?

我嘗試在項目中安裝rspec和mongoid(按照《 Rails Deep Dive》一書中的示例),當我嘗試從RSpec運行生成器時遇到錯誤。

這是gemfile:

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'] %>

我可以確認MongoDB已啟動並正在運行,我能夠訪問Web瀏覽器界面。 但是現在,當我運行rails g rspec:install ,出現以下錯誤:

NOTE: Gem.available? is deprecated, use Specification::find_by_name. It will be removed on or after 2011-11-01.
Gem.available? called from /home/glenn/.rvm/gems/ruby-1.9.3-p362/gems/jasmine-1.0.2.1/lib/jasmine/base.rb:64.
host is not a valid option for Mongo::MongoClient
/home/glenn/.rvm/gems/ruby-1.9.3-p362/gems/bson-1.8.2/lib/bson/bson_c.rb:24:in `serialize': wrong number of arguments(4 for 3) (ArgumentError)

我怎樣才能解決這個問題?

它沒有使用bson_ext gem,可能是因為它已經很老了,而且bson-1.8.2顯然有問題。

您可以刪除:gem'bson_ext','〜> 1.3.1'並嘗試捆綁安裝(默認情況下可能會安裝bson_ext)

或更改:gem'bson_ext','〜> 1.3.1'到gem'bson_ext'

並進行捆綁升級bson_ext(這將強制並升級到bson_ext)

我有同樣的問題。 我對所有寶石使用了HEAD,如下所示,並添加了mongo_ext(盡管我認為它沒有任何改變):

source 'https://rubygems.org'

gem 'rails'
gem 'devise'
gem 'mongoid'
gem 'mongoid_spacial'
gem 'haml'
gem 'bson_ext'
gem 'mongo_ext'
gem 'rails-backbone'

group :assets do
  gem 'sass-rails'
  gem 'coffee-rails'
  gem 'uglifier'
end

gem 'jquery-rails'

group :test, :development do
  gem 'rspec-rails'
  gem 'mongoid-rspec'
  gem 'capybara'
  gem 'factory_girl_rails'
  gem 'database_cleaner'
  gem 'jasmine'
end

我重新運行蒙皮生成器

rails g mongoid:config

為了重新創建正確的mongoid.yml,然后重新創建rspec安裝程序

rails g rspec:install

就這樣。 我使用的寶石的版本是:

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中

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM