2015-03-11 4 views
0

Мое приложение разбивается каждый раз, когда оно включает столько же, сколько «использовать MongoDB;» в моем файле приложения perl.Mojolicious + MongoDB: Не удается найти ошибку MongoDB.pm

Я успешно установил MongoDB. Я могу проверить, что мои базы данных используют один или другой, проверять коллекции, создавать новые коллекции, все из оболочки.

Если я пытаюсь подключиться к MongoDB из Mojolicious приложения, как:

!/usr/bin/env perl 

use Mojolicious::Lite; 
use MongoDB; 
use MongoDB::OID; 

my $mongo_port = shift || 27017; 

helper 'mongo' => sub { 
    my ($self, $name) = @_; 
    my $host = 'localhost:' . $mongo_port; 
    my $conn = MongoDB::MongoClient->new(host => $host); 
    my $db = $conn->get_database('test'); 
}; 

helper 'value2oid' => sub { 
    my ($self, $value) = @_; 
    MongoDB::OID->new($value); 
}; 

Если у меня есть рабочее приложение и включить как:

Use MongoDB; 

я получаю:

Can't load application from file "/Users/eevitomperi/Desktop/Programming/Perl/mojoliciousApp/foodAbout/app.pl": Can't locate MongoDB.pm in @INC (you may need to install the MongoDB module) (@INC contains: /Library/Perl/5.18/darwin-thread-multi-2level /Library/Perl/5.18 /Network/Library/Perl/5.18/darwin-thread-multi-2level /Network/Library/Perl/5.18 /Library/Perl/Updates/5.18.2/darwin-thread-multi-2level /Library/Perl/Updates/5.18.2 /System/Library/Perl/5.18/darwin-thread-multi-2level /System/Library/Perl/5.18 /System/Library/Perl/Extras/5.18/darwin-thread-multi-2level /System/Library/Perl/Extras/5.18 .) at /Users/eevitomperi/Desktop/Programming/Perl/mojoliciousApp/foodAbout/app.pl line 4. 
BEGIN failed--compilation aborted at /Users/eevitomperi/Desktop/Programming/Perl/mojoliciousApp/foodAbout/app.pl line 4. 

Я совершенно не знаком с монго, моджоличным и perl, поэтому, наверное, я не установил какой-то пакет?

Должны ли файлы MongoDB (mongo, mongod ....) находиться в мохоличественном проекте?

Не уверен, что мне не хватает, и вся документация начинается с использования «Use MongoDB;» в мозаичном приложении, поэтому не уверен, что делать.

Надеюсь, кто-то может указать, что я пропустил.

+0

ли установлен модуль? Вероятно, вы не очень заинтересованы в [Mogolicious :: Plugin :: Mongodb] (http://search.cpan.org/~madcat/Mojolicious-Plugin-Mongodb-1.16/lib/Mojolicious/Plugin/Mongodb.pm) во всяком случае , учитывая ваш выбор стека. Не забудьте на самом деле установить из CPAN на этот раз. –

+0

@ Нейл Лунн Спасибо. Я загрузил «Mojolicious-Plugin-Mongodb-1.16» из cpan.org. Не могли бы вы сказать мне, где я должен хранить его в моем мохолическом проекте или где я могу документировать себя лучше. –

+0

Путь слишком широкий. Установки CPAN либо «глобальны», либо локализованы в зависимости от использования чего-то вроде [perlbrew] (http://perlbrew.pl/) или [plenv] (https://github.com/tokuhirom/plenv) или даже [local: : Lib] (https://metacpan.org/pod/local::lib). Не пытаясь быть снисходительным, но ваш «загруженный» комментарий не внушает уверенности в том, что вы действительно сделали что-либо из этих вещей правильно. –

ответ

1

Установка модуля:

cpanm Mojolicious::Plugin::Mongodb 

Фикс следующее:

Can't write to /Library/Perl/5.18 and /usr/local/bin: Installing modules to /Users/eevitomperi/perl5 
! To turn off this warning, you have to do one of the following: 
! - run me as a root or with --sudo option (to install to /Library/Perl/5.18 and /usr/local/bin) 
! - Configure local::lib your existing local::lib in this shell to set PERL_MM_OPT etc. 
! - Install local::lib by running the following commands 

Выполнив:

cpanm --local-lib=~/perl5 local::lib && eval $(perl -I ~/perl5/lib/perl5/ -Mlocal::lib) 

Теперь я могу подключиться к Монго из Mojolicious

Смежные вопросы