2013-10-25 89 views
0

我不明白這樣的輸出:紅寶石寶石加載,但依然給人「未初始化的常量」

$ rails c 
Loading development environment (Rails 3.2.14) 
1.9.3p392 :001> require 'rubygems' 
=> false 
1.9.3p392 :002 > require 'mongo' 
=> false 
1.9.3p392 :003 > include Mongo 
=> Object 
1.9.3p392 :004 > Mongo::VERSION 
=> "1.6.0" 
1.9.3p392 :005 > c = MongoClient.new 
NameError: uninitialized constant MongoClient 
    from (irb):5 

顯然捆綁器正常運行和加載驅動程序的MongoDB寶石「蒙戈」(1.6版本,這應該是罰款)。

然而,當我嘗試根據文檔引用MongoClient時,我得到「未初始化常量」。如果我嘗試將它作爲Mongo :: MongoClient.new引用它,也會發生同樣的情況。

我在這裏錯過了什麼?

+0

更多信息:此rails環境加載mongo_mapper,它似乎以某種方式掩蓋了底層MongoDB驅動程序。 – Mojo

+0

使用最新版本的mongo'1.9.2'我得到'NameError:未初始化的常量Mongo :: VERSION',所以我假設您使用了一些已棄用的版本。 – phoet

回答

0

從您的控制檯輸出中,您使用的是MongoDB Ruby驅動程序版本1.6.0。 相應的API文檔可以在這裏找到。

http://api.mongodb.org/ruby/1.6.0/

版本1.6.0使用舊蒙戈:: Connection類連接到MongoDB的。

MongoClient類是1.8.0版本以來的新版本,因此在任何舊版本中都不可用。

請使用匹配的API和文檔。 請考慮升級到更新版本的mongo_mapper(0.12.0)和mongo(1.9.2)gems。