0

我在 Jruby 1.6.7 下运行的 Rails 应用程序中使用 Jmongo 1.1.5 我正在尝试连接到启用身份验证的 mongodb 实例。使用 db.auth('user', 'pass') 从 mongo CLI 工具执行此操作没有任何问题。

在我的 Jruby 应用程序中,我这样连接:

client = Mongo::Connection.new
db = client.db('my_database')
db.authenticate('user', 'pass')

当服务器不使用 --auth 运行时,我以这种方式使用 mongo 没有问题。#authenticate 调用始终返回具有有效凭据的 false。进一步挖掘,我发现在 gems/jmongo-1.1.5/lib/jmongo/db.rb 中捕获并吃掉了一个异常:

caught in authenticate:  user: cannot convert instance of class 
org.jruby.RubyString to
class [C lib/jmongo/db.rb:50:in `authenticate'

(我破解了 gem 的 db.rb 以查看异常)

有没有人见过这样的东西?

4

1 回答 1

0

原来是一个jmongo错误修复

https://github.com/marclove/jmongo/commit/788244d6b575d49715809e7668e3ad548951e6b6

要解决此问题,请像这样包装密码:

db.authenticate('user', java.lang.String.new('password').toCharArray)
于 2013-01-17T17:31:38.903 回答