2013-10-25 63 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。