[Catalyst] TheSchwartz and Catalyst, Data::Objectdriver new + no strict

Adam Sjøgren adsj at novozymes.com
Mon Nov 12 09:24:58 GMT 2007


I am in the process of wiring calls to TheSchwartz into a Catalyst
application (to queue indexing jobs).

When I do a $client->insert() from a standalone script, everything is
fine, but when I do the same thing from within Catalyst, I get an error:

 Can't use string ("Data::ObjectDriver::Driver::DBD:") as a SCALAR ref
 while "strict refs" in use at
 /usr/share/perl5/Data/ObjectDriver/Driver/DBD.pm line 13

Adding the patch included below to Data::ObjectDriver::Driver::DBD makes
it work as expected (no error, job is inserted in the job-queue).

I wonder why it is not needed "outside" Catalyst, but within. I guess
that it is due to some module that Catalyst uses, and my script doesn't
- but which one?

(The standalone script does use strict; use warnings; so it is not one
one those :-))

Just curious...

  Best regards,


[Catalyst 5.7007, Data::ObjectDriver 0.04, TheSchwartz 1.04]

                                                          Adam Sjøgren
                                                    adsj at novozymes.com

--- DBD.pm.orig	2007-11-12 09:56:12.056777877 +0100
+++ DBD.pm	2007-11-12 10:02:21.473628001 +0100
@@ -10,10 +10,13 @@
     my($name) = @_;
     die "No Driver" unless $name;
     my $subclass = join '::', $class, $name;
+  {
+    no strict;
     unless (defined ${"${subclass}::"}) {
         eval "use $subclass"; ## no critic
         die $@ if $@;
+  }
     bless {}, $subclass;

More information about the Catalyst mailing list