[Jifty-commit] r1562 - in Jifty-DBI/trunk: lib/Jifty/DBI

jifty-commit at lists.jifty.org jifty-commit at lists.jifty.org
Thu Jul 13 17:08:16 EDT 2006


Author: audreyt
Date: Thu Jul 13 17:08:16 2006
New Revision: 1562

Modified:
   Jifty-DBI/trunk/lib/Jifty/DBI/Schema.pm
   Jifty-DBI/trunk/t/testmodels.pl

Log:
* Change the "schema" idiom again.  It now reads:

    package Wifty::Model::Page;

    use Jifty::DBI::Schema;
    use base 'Jifty::DBI::Record' => schema {

    # ... your columns here ...

    };


Modified: Jifty-DBI/trunk/lib/Jifty/DBI/Schema.pm
==============================================================================
--- Jifty-DBI/trunk/lib/Jifty/DBI/Schema.pm	(original)
+++ Jifty-DBI/trunk/lib/Jifty/DBI/Schema.pm	Thu Jul 13 17:08:16 2006
@@ -11,7 +11,7 @@
 
     package Wifty::Model::Page;
     use Jifty::DBI::Schema;
-    use base schema {
+    use base 'Jifty::DBI::Record' => schema {
     # ... your columns here ...
     };
 
@@ -58,18 +58,28 @@
 Takes a block with schema declarations.  Unimports all helper functions after
 executing the code block.  Usually used at C<BEGIN> time via this idiom:
 
-    use base schema { ... };
+    use base 'Jifty::DBI::Record' => schema { ... };
 
 =cut
 
 sub schema (&) {
     my $code = shift;
 
-    # First we run the code as usual.
-    $code->();
+    my $from = (caller)[0];
 
+    if ( UNIVERSAL::isa($from, 'Jifty::DBI::Record') ) {
+        # We run the code as usual if the caller is J::D::R.
+        $code->();
+    }
+    else {
+        # If the caller is not, we temporarily make it so.
+        require Jifty::DBI::Record;
+        no strict 'refs';
+        local @{"$from\::ISA"} = (@{"$from\::ISA"}, 'Jifty::DBI::Record');
+        $code->();
+    }
+    
     # Unimport all our symbols from the calling package.
-    my $from = (caller)[0];
     foreach my $sym (@EXPORT) {
         no strict 'refs';
         undef *{"$from\::$sym"};

Modified: Jifty-DBI/trunk/t/testmodels.pl
==============================================================================
--- Jifty-DBI/trunk/t/testmodels.pl	(original)
+++ Jifty-DBI/trunk/t/testmodels.pl	Thu Jul 13 17:08:16 2006
@@ -1,7 +1,6 @@
 package Sample::Employee;
 use Jifty::DBI::Schema;
-use base qw/Jifty::DBI::Record/;
-use base schema {
+use base 'Jifty::DBI::Record' => schema {
 
 column dexterity => type is 'integer';
 column name      => type is 'varchar';
@@ -10,9 +9,7 @@
 
 package Sample::Address;
 use Jifty::DBI::Schema;
-use base qw/Jifty::DBI::Record/;
-
-schema {
+use base 'Jifty::DBI::Record' => schema {
 
 column employee_id =>
   refers_to Sample::Employee;


More information about the Jifty-commit mailing list