C::M::DBIC::Schema -- better defaults for create=static, with backcompat
Rafael Kitover [Fri, 20 Feb 2009 16:12:49 +0000 (16:12 +0000)]
Makefile.PL
lib/Catalyst/Helper/Model/DBIC/Schema.pm
lib/Catalyst/Model/DBIC/Schema.pm

index 46646a8..9b44d6b 100644 (file)
@@ -13,7 +13,7 @@ test_requires 'Test::More';
 feature 'Catalyst::Helper support',
     -default                      => 0,
     'Catalyst::Devel'             => '1.0',
-    'DBIx::Class::Schema::Loader' => '0.03012';
+    'DBIx::Class::Schema::Loader' => '0.04005';
 
 if(-e 'MANIFEST.SKIP') {
     system("pod2text lib/Catalyst/Model/DBIC/Schema.pm > README");
index 93c08f2..a42b94e 100644 (file)
@@ -122,11 +122,35 @@ sub mk_compclass {
             $num++;
         }
 
-        make_schema_at(
-            $schema_class,
-            { relationships => 1 },
-            \@loader_connect_info,
-        );
+# Check if we need to be backward-compatible.
+        my $compatible = 0;
+
+        my @schema_pm   = split '::', $schema_class;
+        $schema_pm[-1] .= '.pm';
+        my $schema_file = File::Spec->catfile($helper->{base}, 'lib', @schema_pm);
+
+        if (-f $schema_file) {
+            my $schema_code = do { local (@ARGV, $/) = $schema_file; <> };
+            $compatible = 1 if $schema_code =~ /->load_classes/;
+        }
+
+        if ($compatible) {
+            make_schema_at(
+                $schema_class,
+                { relationships => 1 },
+                \@loader_connect_info,
+            );
+        } else { # use some saner defaults
+            make_schema_at(
+                $schema_class,
+                {
+                    relationships => 1,
+                    use_namespaces => 1,
+                    components => ['InflateColumn::DateTime']
+                },
+                \@loader_connect_info,
+            );
+        }
     }
 
     my $file = $helper->{file};
index dc4dc2e..4e05510 100644 (file)
@@ -3,7 +3,7 @@ package Catalyst::Model::DBIC::Schema;
 use strict;
 use warnings;
 
-our $VERSION = '0.22';
+our $VERSION = '0.23';
 
 use base qw/Catalyst::Model Class::Accessor::Fast Class::Data::Accessor/;
 use NEXT;