[Catalyst] Apache2 problem

Alan Humphrey alan.humphrey at comcast.net
Fri Jan 27 01:43:41 CET 2006


It looks like the question boils down to: Is an engine supposed to have a
request object?  Tracing through the debugger we see:

 

Catalyst::prepare_connection(/usr/pkg/lib/perl5/site_perl/5.8.0/Catalyst.pm:
1391):

1391:       $c->engine->prepare_connection( $c, @_ );

 

When we get to prepare_connection we see:

 

sub prepare_connection {

my $c = shift;

      $c->request->address( $c->apache->connection->remote_ip );

 

  DB<6> x ref($c)

0  'Catalyst::Engine::Apache::MP20'

 

Note that the $c that was passed in is ignored.

 

Sure enough, $c doesn't have a request method:

 

  DB<7> m $c

prepare_body

prepare_parameters

prepare_request

prepare_uploads

via Catalyst::Engine::Apache::MP20::Base: finalize_headers

via Catalyst::Engine::Apache::MP20::Base: handler

via Catalyst::Engine::Apache::MP20::Base -> Catalyst::Engine::Apache::Base:
_apache_accessor

via Catalyst::Engine::Apache::MP20::Base -> Catalyst::Engine::Apache::Base:
apache

via Catalyst::Engine::Apache::MP20::Base -> Catalyst::Engine::Apache::Base:
finalize_body

via Catalyst::Engine::Apache::MP20::Base -> Catalyst::Engine::Apache::Base:
prepare_connection

via Catalyst::Engine::Apache::MP20::Base -> Catalyst::Engine::Apache::Base:
prepare_headers

via Catalyst::Engine::Apache::MP20::Base -> Catalyst::Engine::Apache::Base:
prepare_path

via Catalyst::Engine::Apache::MP20::Base -> Catalyst::Engine::Apache::Base:
run

via Catalyst::Engine::Apache::MP20::Base -> Catalyst::Engine::Apache::Base
-> Catalyst::Engine: (""

via Catalyst::Engine::Apache::MP20::Base -> Catalyst::Engine::Apache::Base
-> Catalyst::Engine: ()

via Catalyst::Engine::Apache::MP20::Base -> Catalyst::Engine::Apache::Base
-> Catalyst::Engine: Dumper

via Catalyst::Engine::Apache::MP20::Base -> Catalyst::Engine::Apache::Base
-> Catalyst::Engine: _decode_entities

via Catalyst::Engine::Apache::MP20::Base -> Catalyst::Engine::Apache::Base
-> Catalyst::Engine: _read_length_accessor

via Catalyst::Engine::Apache::MP20::Base -> Catalyst::Engine::Apache::Base
-> Catalyst::Engine: _read_position_accessor

via Catalyst::Engine::Apache::MP20::Base -> Catalyst::Engine::Apache::Base
-> Catalyst::Engine: decode_entities

via Catalyst::Engine::Apache::MP20::Base -> Catalyst::Engine::Apache::Base
-> Catalyst::Engine: encode_entities

via Catalyst::Engine::Apache::MP20::Base -> Catalyst::Engine::Apache::Base
-> Catalyst::Engine: finalize_cookies

via Catalyst::Engine::Apache::MP20::Base -> Catalyst::Engine::Apache::Base
-> Catalyst::Engine: finalize_error

via Catalyst::Engine::Apache::MP20::Base -> Catalyst::Engine::Apache::Base
-> Catalyst::Engine: finalize_read

via Catalyst::Engine::Apache::MP20::Base -> Catalyst::Engine::Apache::Base
-> Catalyst::Engine: finalize_uploads

via Catalyst::Engine::Apache::MP20::Base -> Catalyst::Engine::Apache::Base
-> Catalyst::Engine: prepare_body_chunk

via Catalyst::Engine::Apache::MP20::Base -> Catalyst::Engine::Apache::Base
-> Catalyst::Engine: prepare_body_parameters

via Catalyst::Engine::Apache::MP20::Base -> Catalyst::Engine::Apache::Base
-> Catalyst::Engine: prepare_cookies

via Catalyst::Engine::Apache::MP20::Base -> Catalyst::Engine::Apache::Base
-> Catalyst::Engine: prepare_query_parameters

via Catalyst::Engine::Apache::MP20::Base -> Catalyst::Engine::Apache::Base
-> Catalyst::Engine: prepare_read

via Catalyst::Engine::Apache::MP20::Base -> Catalyst::Engine::Apache::Base
-> Catalyst::Engine: prepare_write

via Catalyst::Engine::Apache::MP20::Base -> Catalyst::Engine::Apache::Base
-> Catalyst::Engine: read

via Catalyst::Engine::Apache::MP20::Base -> Catalyst::Engine::Apache::Base
-> Catalyst::Engine: read_chunk

via Catalyst::Engine::Apache::MP20::Base -> Catalyst::Engine::Apache::Base
-> Catalyst::Engine: read_length

via Catalyst::Engine::Apache::MP20::Base -> Catalyst::Engine::Apache::Base
-> Catalyst::Engine: read_position

via Catalyst::Engine::Apache::MP20::Base -> Catalyst::Engine::Apache::Base
-> Catalyst::Engine: write

via Catalyst::Engine::Apache::MP20::Base -> Catalyst::Engine::Apache::Base
-> Catalyst::Engine -> Class::Accessor::Fast: make_accessor

via Catalyst::Engine::Apache::MP20::Base -> Catalyst::Engine::Apache::Base
-> Catalyst::Engine -> Class::Accessor::Fast: make_ro_accessor

via Catalyst::Engine::Apache::MP20::Base -> Catalyst::Engine::Apache::Base
-> Catalyst::Engine -> Class::Accessor::Fast: make_wo_accessor

via Catalyst::Engine::Apache::MP20::Base -> Catalyst::Engine::Apache::Base
-> Catalyst::Engine -> Class::Accessor::Fast ->
Class::Accessor:_mk_accessors

via Catalyst::Engine::Apache::MP20::Base -> Catalyst::Engine::Apache::Base
-> Catalyst::Engine -> Class::Accessor::Fast -> Class::Accessor: get

via Catalyst::Engine::Apache::MP20::Base -> Catalyst::Engine::Apache::Base
-> Catalyst::Engine -> Class::Accessor::Fast -> Class::Accessor:
mk_accessors

via Catalyst::Engine::Apache::MP20::Base -> Catalyst::Engine::Apache::Base
-> Catalyst::Engine -> Class::Accessor::Fast -> Class::Accessor:
mk_ro_accessors

via Catalyst::Engine::Apache::MP20::Base -> Catalyst::Engine::Apache::Base
-> Catalyst::Engine -> Class::Accessor::Fast -> Class::Accessor:
mk_wo_accessors

via Catalyst::Engine::Apache::MP20::Base -> Catalyst::Engine::Apache::Base
-> Catalyst::Engine -> Class::Accessor::Fast -> Class::Accessor: new

via Catalyst::Engine::Apache::MP20::Base -> Catalyst::Engine::Apache::Base
-> Catalyst::Engine -> Class::Accessor::Fast -> Class::Accessor: set

via Catalyst::Engine::Apache::MP20::Base -> Catalyst::Engine::Apache::Base
-> Catalyst::Engine::Apache: _return_accessor

via Catalyst::Engine::Apache::MP20::Base -> Catalyst::Engine::Apache::Base
-> Catalyst::Engine::Apache: return

via Catalyst::Engine::CGI: _env_accessor

via Catalyst::Engine::CGI: env

via UNIVERSAL: VERSION

via UNIVERSAL: can

via UNIVERSAL: import

via UNIVERSAL: isa

via UNIVERSAL: require

via UNIVERSAL: use

 

I started playing around with the prepare_connection method in Base.pm, but
quickly started digging a deeper hole.  It looks like something upstream
might be screwing things up, so I thought I'd ask the question at the top:
is the Engine supposed to have a Request object?

 

- Alan

 

-----Original Message-----
From: catalyst-bounces at lists.rawmode.org
[mailto:catalyst-bounces at lists.rawmode.org] On Behalf Of Alan Humphrey
Sent: Thursday, January 26, 2006 2:11 PM
To: catalyst at lists.rawmode.org
Subject: [Catalyst] Apache2 problem

 

I'm getting the following error when I try to load a page under Apache
(2.0.54).  I'm running Catalyst 5.62 and everything else *appears* to be up
to date.

 

Any ideas?

 

-          Alan

 

[Thu Jan 26 13:58:43 2006] [catalyst] [error] Caught exception in engine
"Can't locate object method "request" via package
"Catalyst::Engine::Apache::MP20" at
/usr/pkg/lib/perl5/site_perl/5.8.0/Catalyst/Engine/Apache/Base.pm line 76,
<DATA> line 225."

 

Line 76 in Base.pm is in prepare_connection:

 

74 sub prepare_connection {

75     my $c = shift;

76     $c->request->address( $c->apache->connection->remote_ip );

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.rawmode.org/pipermail/catalyst/attachments/20060126/5d1c157f/attachment-0001.htm


More information about the Catalyst mailing list