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 に答える