What's the backtrace look like if you load Devel::SimpleTrace or Carp::Always?
Cheers t0m On 30 Mar 2013, at 12:04, will trillich <will.trill...@serensoft.com> wrote: > We have a Catalyst app "Waste::Web" that has been running fine and we are > trying to upgrade to a more modern set of libraries via "cpanm". (One library > was upgraded that caused conflicts, now we're running a sweep to get > everything updated...) > > We have an old app called "Spills" that still runs fine. The problem is with > a different old app called "Waste::Web"... It won't start, throwing the > "can't use string as HASH ref" error, neither as standalone server for > testing nor via apache. Suggestions? > > > > At first we thought maybe the script formats had changed. So we ran a quick > sample "catalyst.pl Catalyst::Upgrade" to come up with the latest structure > for comparison. This I'll call "new script" below. Then we looked at the > script/*pl files, the lib/* files. None of the structures seem to have > changed from what we can tell. > > That is, the old script/*server.pl script has the same standard structure as > the brand new script: > > #!/usr/bin/env perl > BEGIN { > $ENV{CATALYST_SCRIPT_GEN} = 40; > } > use Catalyst::ScriptRunner; > Catalyst::ScriptRunner->run('Waste::Web', 'Server'); > 1; > > Comparing lib/Waste/Web.pm (old script) to lib/Catalyst/Upgrade.pm (new > script) also looks similar -- commented code redacted for space: > > package Waste::Web; > use Moose; > use namespace::autoclean; > > use Catalyst::Runtime 5.80; > > use Catalyst qw/ > ConfigLoader > Static::Simple > Session > Session::Store::DBIC > Session::State::Cookie > Authentication > Authentication::Credential::Password > Authorization::Roles > Cache > /; > use Waste::Lib::CSV; > > extends 'Catalyst'; > > our $VERSION = '1.10'; > > __PACKAGE__->config( > name => 'Waste::Web', > # Disable deprecated behavior needed by old applications > disable_component_resolution_regex_fallback => 1, > ); > > # Start the application > __PACKAGE__->setup(); > > In the new script there *is* a new option to the __PACKAGE__->config call but > it's just to instantiate the X-Catalyst http header. All serious structures > look the same. > > But Catalyst::Upgrade runs just fine, and an old app Spill runs just fine, > where Waste::Web throws the error: > > Waste$ perl script/waste_web_server.pl > Can't use string ("Waste::Web") as a HASH ref while "strict refs" in use at > /usr/share/perl5/Class/Accessor/Fast.pm line 10. > Compilation failed in require at > /usr/local/share/perl/5.10.1/Catalyst/ScriptRunner.pm line 50. > > Waste$ cd ../Catalyst-Upgrade/ > Catalyst-Upgrade$ perl script/catalyst_upgrade_server.pl > HTTP::Server::PSGI: Accepting connections at http://0:3000/ > > Any ideas why we'd be getting this error? > > Here's the single-step debug log: > > Catalyst::Script::Server::run(/usr/local/share/perl/5.10.1/Catalyst/Script/Server.pm:240): > DB<1> v > 237 $self->pidfile->write > 238: if $self->_has_pidfile; > 239 > 240==> $self->_run_application; > 241 } > 242 > 243 > 244 } > 245 > 246 sub _plack_loader_args { > > DB<1> s > Catalyst::ScriptRole::_run_application(/usr/local/share/perl/5.10.1/Catalyst/ScriptRole.pm:88): > 88: my $self = shift; > > DB<1> n > Catalyst::ScriptRole::_run_application(/usr/local/share/perl/5.10.1/Catalyst/ScriptRole.pm:89): > 89: my $app = $self->application_name; > > DB<1> n > Catalyst::ScriptRole::_run_application(/usr/local/share/perl/5.10.1/Catalyst/ScriptRole.pm:90): > 90: Class::MOP::load_class($app); > > DB<1> p $app > Waste::Web > > DB<2> n > Can't use string ("Waste::Web") as a HASH ref while "strict refs" in use at > /usr/share/perl5/Class/Accessor/Fast.pm line 10. > Compilation failed in require at > /usr/local/share/perl/5.10.1/Catalyst/ScriptRunner.pm line 50. > at /usr/local/share/perl/5.10.1/Catalyst/ScriptRole.pm line 90. > > Catalyst::ScriptRole::_run_application('Catalyst::Script::Server=HASH(0xa5e1660)') > called at /usr/local/share/perl/5.10.1/Catalyst/Script/Server.pm line 240 > > Catalyst::Script::Server::run('Catalyst::Script::Server=HASH(0xa5e1660)') > called at /usr/local/share/perl/5.10.1/Catalyst/ScriptRunner.pm line 50 > Catalyst::ScriptRunner::run('Catalyst::ScriptRunner', 'Waste::Web', > 'Server') called at script/waste_web_server.pl line 8 > Debugged program terminated. Use q to quit or R to restart, > use o inhibit_exit to avoid stopping after program termination, > h q, h R or h o to get additional info. > > > _______________________________________________ > List: Catalyst@lists.scsys.co.uk > Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst > Searchable archive: http://www.mail-archive.com/catalyst@lists.scsys.co.uk/ > Dev site: http://dev.catalyst.perl.org/ _______________________________________________ List: Catalyst@lists.scsys.co.uk Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst Searchable archive: http://www.mail-archive.com/catalyst@lists.scsys.co.uk/ Dev site: http://dev.catalyst.perl.org/