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 をハックして例外を確認しました)
誰もこのようなものを見たことがありますか?