2013-01-21 33 views
0

我嘗試在項目中安裝rspec和mongoid(以下是本書'Rails Deep Dive'的示例),當我嘗試從RSpec運行生成器時出現錯誤。如何在生成RSpec測試時防止在RSpec和Mongoid中出現此錯誤?

這裏是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 

我生成使用發電機的蒙戈配置文件,這裏是結果:

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) 

我該如何解決這個問題?

回答

0

它沒有使用bson_ext gem,可能是因爲它是舊的,顯然bson-1.8.2有問題。

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

或變化: 寶石 'bson_ext',「〜> 1.3.1' 到 寶石‘bson_ext’

,並做了捆綁升級bson_ext(這應該強制升級到bson_ext)

0

我有同樣的問題。我用頭所有的寶石如下面給出的,並添加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 

以我再重新運行mongoid發電機

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) 

而且在spec_helper.rb

註釋掉

config.use_transactional_fixtures = true 

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