2013-11-30 5 views
1

Я хочу использовать bson_ext с mongodb, но получаю странную ошибку.Mongodb bson_ext InvalidDocument error

Я попытался запустить этот тест рубин код:

require 'mongo' 
include Mongo 
mongoClient = MongoClient.new("localhost", 27017) 

и ошибка была:

/home/user/.rvm/gems/ruby-2.0.0-p353/gems /bson-1.9.2/lib/bson/bson_c.rb:20:in serialize': BSON.serialize takes a Hash but got a Hash (BSON::InvalidDocument) from /home/user/.rvm/gems/ruby-2.0.0-p353/gems/bson-1.9.2/lib/bson/bson_c.rb:20:in сериализации» ...

Я бегала комплект установки со следующим Gemfile:

gem "bson" 
gem "bson_ext" 
gem "mongo" 

(Установленные версии все 1.9.2 но рубин 2.0.0)

Я действительно не знаю, что делать. Может кто-то указать мне верное направление?

ответ

1

я попытался воспроизвести это, но он работал на меня с рубином 2.0.0p247

$ ruby -v 
ruby 2.0.0p247 (2013-06-27 revision 41674) [universal.x86_64-darwin13] 

Я установил ту же версию драгоценных камней.

$ gem list 

*** LOCAL GEMS *** 

bson (1.9.2, 1.3.1) 
bson_ext (1.9.2, 1.3.1) 
bundler (1.5.1) 
CFPropertyList (2.2.0) 
libxml-ruby (2.6.0) 
mongo (1.9.2, 1.3.1) 
nokogiri (1.5.6) 
sqlite3 (1.3.7) 

Попытка подключения

$ irb 
irb(main):001:0> require 'mongo' 
=> true 
irb(main):002:0> include Mongo 
=> Object 
irb(main):003:0> mongoClient = MongoClient.new("localhost", 27017) 
=> #<Mongo::MongoClient:0x007f971b96fd70 @host="localhost", @port=27017, @id_lock=#<Mutex:0x007f971b96fcd0>, @primary=["localhost", 27017], @primary_pool=#<Mongo::Pool:0x3fcb8dcb6e00 @host=localhost @port=27017 @ping_time= 0/1 sockets available up=true>, @mongos=false, @tag_sets=[], @acceptable_latency=15, @max_message_size=48000000, @max_bson_size=16777216, @slave_ok=nil, @ssl=nil, @unix=false, @socket_opts={}, @socket_class=Mongo::TCPSocket, @auths=[], @pool_size=1, @pool_timeout=5.0, @op_timeout=nil, @connect_timeout=30, @logger=nil, @read=:primary, @default_db="test", @write_concern={:w=>1, :j=>false, :fsync=>false, :wtimeout=>nil}, @read_primary=true> 

Остановил mongod, чтобы проверить его действительно подключения

irb(main):004:0> mongoClient = MongoClient.new("localhost", 27017) 
Mongo::ConnectionFailure: Failed to connect to a master node at localhost:27017 
from /Library/Ruby/Gems/2.0.0/gems/mongo-1.9.2/lib/mongo/mongo_client.rb:486:in `connect' 
from /Library/Ruby/Gems/2.0.0/gems/mongo-1.9.2/lib/mongo/mongo_client.rb:693:in `setup' 
from /Library/Ruby/Gems/2.0.0/gems/mongo-1.9.2/lib/mongo/mongo_client.rb:155:in `initialize' 
from (irb):4:in `new' 
from (irb):4 
from /usr/bin/irb:12:in `<main>' 

Я надеюсь, что это помогает.