【问题标题】:Ruby MongoClient: Initializing from irb succeeds, initializing from script failsRuby MongoClient:从irb初始化成功,从脚本初始化失败
【发布时间】:2013-08-19 00:20:55
【问题描述】:

我正在尝试从脚本初始化 MongoClient,但我失败了。 我要做的就是:

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

它失败并出现以下错误:

/var/lib/gems/1.9.1/gems/mongo-1.9.1/lib/mongo/cursor.rb:43:in `initialize': undefined method `connection' for nil:NilClass (NoMethodError)
    from /var/lib/gems/1.9.1/gems/mongo-1.9.1/lib/mongo/db.rb:564:in `new'
    from /var/lib/gems/1.9.1/gems/mongo-1.9.1/lib/mongo/db.rb:564:in `command'
    from /var/lib/gems/1.9.1/gems/mongo-1.9.1/lib/mongo/mongo_client.rb:591:in `block in check_is_master'
    from /usr/lib/ruby/1.9.1/timeout.rb:68:in `timeout'
    from /var/lib/gems/1.9.1/gems/mongo-1.9.1/lib/mongo/mongo_client.rb:590:in `check_is_master'
    from /var/lib/gems/1.9.1/gems/mongo-1.9.1/lib/mongo/mongo_client.rb:474:in `connect'
    from /var/lib/gems/1.9.1/gems/mongo-1.9.1/lib/mongo/mongo_client.rb:698:in `setup'
    from /var/lib/gems/1.9.1/gems/mongo-1.9.1/lib/mongo/mongo_client.rb:155:in `initialize'
    from ./test.rb:52:in `new'
    from ./test.rb:52:in `<main>'

但是,当我从 irb 尝试完全相同的东西时,它就可以了。

Ruby 版本是:

ruby 1.9.3p194(2012-04-20 修订版 35410)[x86_64-linux]

irb 是:

/usr/bin/irb1.9.1 --version irb 0.9.6(09/06/30)

我也尝试过要求“rubygems”,但据我所知,Ruby 1.9 不需要它。 我是不是忘记了什么?

【问题讨论】:

  • 这对我来说很好,正如描述的那样;你能提供一个最低限度的完整失败的例子吗?
  • 克里斯,这是一个最低限度的完全失败的例子。这就是文件中的所有内容......但它在 irb 中工作......
  • 这里绝对有效;由于没有活动的连接对象,因此引发了错误,但它应该在那之前被炸毁。考虑打开有关 Mongo Ruby 驱动程序的错误报告。
  • 是的,我想我会的。我也会尝试安装不同的 Ruby 版本,以防万一。谢谢。
  • 如果工作不正常,这会让很多人崩溃。我怀疑这可能是您的环境问题。您使用的是什么版本的 mongo gem?为什么您的 irb 似乎在不同的 ruby​​ 运行时 (1.9.1) 下?

标签: ruby mongodb


【解决方案1】:

此问题已通过重新安装 ruby​​ 得到解决。我从来没有发现问题是什么以及导致它的原因。

感谢大家的帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-03
    • 2012-03-25
    • 2016-03-25
    • 2012-11-17
    相关资源
    最近更新 更多