[英]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.