[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