Web‑серверы и прикладные web‑сервисы: Nginx, Apache, HAProxy, панели управления и скрипты для администрирования.
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
-
Darwent
- рядовой
- Сообщения: 23
- Зарегистрирован: 2008-11-17 10:28:39
Непрочитанное сообщение
Darwent » 2010-02-23 4:23:01
Не могу найти ошибку в работе с HTTP::Router, поставил конфиг который написан в документации
http://search.cpan.org/~masaki/HTTP-Rou ... /Router.pm
Код: Выделить всё
use HTTP::Router;
use HTTP::Router::Route;
use HTTP::Router::Match;
use HTTP::Router::Debug;
use HTTP::Router::Declare;
my $router = HTTP::Router->new;
my $route = HTTP::Router::Route->new(
path => '/',
conditions => { method => 'GET' },
params => { controller => 'Root', action => 'index' },
);
$router->add_route($route);
# GET /
my $match = $router->match('/see/');
$match->params; # { controller => 'Root', action => 'index' }
$match->uri_for; # '/'
выдаёт ошибку Can't call method "params" on an undefined value at
Сервер у меня свой на FreeBSD модули ставил из портов, вроде всё правильно собралось без ошибок, в чём может быть проблема?
Darwent
-
Хостинг HostFood.ru
-
Хостинг HostFood.ru
Тарифы на хостинг в России, от 12 рублей:
https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.:
https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах:
https://www.host-food.ru/domains/
-
Darwent
- рядовой
- Сообщения: 23
- Зарегистрирован: 2008-11-17 10:28:39
Непрочитанное сообщение
Darwent » 2010-02-23 10:13:48
Код: Выделить всё
Software error:
Can't call method "params" on an undefined value at /pub/www/homepage/Домен.ru/www/index.pl line 170.
For help, please send mail to the webmaster (sergey@test.ru), giving this error message and the time and date of the error.
А вот она строка 170
Код: Выделить всё
$match->params; # { controller => 'Root', action => 'index' }
Из небольших соображений убрал домен
Darwent
-
Darwent
- рядовой
- Сообщения: 23
- Зарегистрирован: 2008-11-17 10:28:39
Непрочитанное сообщение
Darwent » 2010-02-23 10:26:34
$VAR1 = bless( { 'params' => { 'controller' => 'Root', 'action' => 'index' }, 'path' => '/', 'conditions' => { 'method' => 'GET' } }, 'HTTP::Router::Route' );
пробовал ставить
Всё равно та же ошибка
Darwent
-
ProFTP
- подполковник
- Сообщения: 3388
- Зарегистрирован: 2008-04-13 1:50:04
- Откуда: %&й
-
Контактная информация:
Непрочитанное сообщение
ProFTP » 2010-02-23 19:21:48
Код: Выделить всё
use HTTP::Router;
use HTTP::Router::Route;
use HTTP::Router::Match;
use HTTP::Router::Debug;
use HTTP::Router::Declare;
my $router = HTTP::Router->new;
my $route = HTTP::Router::Route->new(
path => '/',
conditions => { method => 'GET' },
params => { controller => 'Root', action => 'index' },
);
$router->add_route($route);
# GET /
use Data::Dumper;
print Dumper($router);
print "\n\n --------------- \n\n":
print Dumper($match);
my $match = $router->match('/see/');
$match->params; # { controller => 'Root', action => 'index' }
$match->uri_for; # '/'
посмотреть надо есть ли метод...
скорее всего вы что-то напутали...
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'


ProFTP
-
ProFTP
- подполковник
- Сообщения: 3388
- Зарегистрирован: 2008-04-13 1:50:04
- Откуда: %&й
-
Контактная информация:
Непрочитанное сообщение
ProFTP » 2010-02-24 0:18:36
Darwent писал(а):
$VAR1 = bless( { 'params' => { 'controller' => 'Root', 'action' => 'index' }, 'path' => '/', 'conditions' => { 'method' => 'GET' } }, 'HTTP::Router::Route' );
Код: Выделить всё
my $match = $router->match('/see/');
$match->params; # { controller => 'Root', action => 'index' }
разницу видно?
что в объекте $route есть, а в $route
r ( $match ) скорее всего нету...
попробуйте так:
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'


ProFTP
-
ProFTP
- подполковник
- Сообщения: 3388
- Зарегистрирован: 2008-04-13 1:50:04
- Откуда: %&й
-
Контактная информация:
Непрочитанное сообщение
ProFTP » 2010-02-24 0:27:52
Darwent писал(а):
Всё равно та же ошибка
потому что &match скорее всего возвращает не объект, а какие-то просто данные...
$match это объект?
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'


ProFTP
-
perlmonks.org.ru
- проходил мимо
Непрочитанное сообщение
perlmonks.org.ru » 2010-02-24 16:34:40
use Any::Moose;
use Any::Moose 'X::AttributeHelpers';
use Hash::AsObject;
use List::MoreUtils 'part';
use HTTP::Router::Route;
НА мус запилена эта либа - так что проверь валидно ли у тебя установлены все эти модули.
По идее идет наследование класса в match, так что $match должен вызывать методы $route.
perlmonks.org.ru
-
ProFTP
- подполковник
- Сообщения: 3388
- Зарегистрирован: 2008-04-13 1:50:04
- Откуда: %&й
-
Контактная информация:
Непрочитанное сообщение
ProFTP » 2010-03-04 11:46:19
Код: Выделить всё
sub match {
my $self = shift;
my $req = blessed $_[0] ? $_[0] : Hash::AsObject->new(path => $_[0], %{ $_[1] || {} });
if ($self->use_inline_match) {
return $self->inline_matcher->($req);
}
else {
for my $route ($self->routes) {
my $match = $route->match($req) or next;
return $match;
}
return;
}
}
если я ничего не перепутал то вот этот match, и он может возвратить не объект... тут кстате, нету "Обработки исключений" ошибки могут быть разные
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'


ProFTP