X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FCDBICompat.pm;h=ee983fd7eea24b6c85cd61e2deb2bfe0b0026f05;hb=fcf32d045;hp=52c0509e940640db09d58619a2f60fb80f13f06c;hpb=fbee5c55de34295824d987129c7d0b4bc65279a8;p=dbsrgits%2FDBIx-Class.git diff --git a/lib/DBIx/Class/CDBICompat.pm b/lib/DBIx/Class/CDBICompat.pm index 52c0509..ee983fd 100644 --- a/lib/DBIx/Class/CDBICompat.pm +++ b/lib/DBIx/Class/CDBICompat.pm @@ -3,13 +3,21 @@ package DBIx::Class::CDBICompat; use strict; use warnings; use base qw/DBIx::Class::Core DBIx::Class::DB/; -use Carp::Clan qw/^DBIx::Class/; -eval { - require Class::Trigger; - require DBIx::ContextualFetch; -}; -croak "Class::Trigger and DBIx::ContextualFetch is required for CDBICompat" if $@; +# Modules CDBICompat needs that DBIx::Class does not. +my @Extra_Modules = qw( + Class::Trigger + DBIx::ContextualFetch + Clone +); + +my @didnt_load; +for my $module (@Extra_Modules) { + push @didnt_load, $module unless eval qq{require $module}; +} +__PACKAGE__->throw_exception("@{[ join ', ', @didnt_load ]} are missing and are required for CDBICompat") + if @didnt_load; + __PACKAGE__->load_own_components(qw/ Constraints @@ -54,7 +62,7 @@ DBIx::Class::CDBICompat - Class::DBI Compatibility layer. =head1 DESCRIPTION DBIx::Class features a fully featured compatibility layer with L -and some common plugins to ease transition for existing CDBI users. +and some common plugins to ease transition for existing CDBI users. This is not a wrapper or subclass of DBIx::Class but rather a series of plugins. The result being that even though you're using the Class::DBI emulation layer you are still getting DBIx::Class objects. You can use all DBIx::Class features and methods via CDBICompat. This allows you to take advantage of DBIx::Class features without having to rewrite your CDBI code. @@ -82,8 +90,8 @@ This plugin will work, but it is more efficiently done using DBIC's native searc =head2 Choosing Features -In fact, this class is just a receipe containing all the features emulated. -If you like, you can choose which features to emulate by building your +In fact, this class is just a recipe containing all the features emulated. +If you like, you can choose which features to emulate by building your own class and loading it like this: package My::DB; @@ -136,17 +144,17 @@ The semi-documented Class::DBI::Relationship objects returned by Ctable("foo"); Foo->columns( All => qw(this that bar) ); package Bar; use base qw(Class::DBI); - + Bar->table("bar"); Bar->columns( All => qw(up down) ); @@ -157,9 +165,9 @@ Relationships between tables (has_a, has_many...) must be delcared after all tab =back -=head1 AUTHORS +=head1 AUTHOR AND CONTRIBUTORS -Matt S. Trout +See L and L in DBIx::Class =head1 LICENSE