2012年7月15日日曜日

Can't locate object method "run_command" via package "MongoDB::Database"

というエラーが出た

PerlからMongoDBに接続するところでrun_commandなんて無いですよー
と言われてエラーになっている

結構ハマったのでメモしておきます。。。

■環境
perl・・・5.8.8
MongoDB・・・2.0.6
PerlMongoDriver・・・ 0.45

■原因
MongoDB::Connection.pmでrun_commandを呼び出しているが
useしているモジュールの中でrun_commandを定義しているモジュールがない

■解決方法
MongoDB::Connection.pmに呼び出すモジュールを追加する
追加するモジュールはMongoDB::Database.pm
以下、自分で解決したときのコマンドを記載しておく

cd /usr/lib64/perl5/site_perl/5.8.8/x86_64-linux-thread-multi/MongoDB
emacs Connection.pm
package MongoDB::Connection;
our $VERSION='0.45';

# ABSTRACT: A connection to a Mongo server

use MongoDB;
use MongoDB::Database;←これを追加する
use MongoDB::Cursor;

use Any::Moose;
use Any::Moose'Util::TypeConstraints';
use Digest::MD5;
use Tie::IxHash;
use boolean;

PerlのMongoDBドライバは実はGitHubで公開されているので、forkして修正してpull requestしようかと思ってます
まぁ自分がそんなにPerlに詳しくないのがいけないんだと思うんですが、これはちょっとひどいと感じてしまいました

・mongodb / mongo-perl-driver
https://github.com/mongodb/mongo-perl-driver/

0 件のコメント:

コメントを投稿