X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=dbsrgits%2FDBIx-Class.git;a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FComponentised.pm;h=17eb4f3a5a9934d5c91fcedfd4c6af30597f5ea2;hp=10b91e95d768ff6f1b345935a06e5202e7a34114;hb=3c2a505c93702ae84fca6985e306da721de2830a;hpb=05d90040cbd946db28ca9a5f9c808e38f68faebc diff --git a/lib/DBIx/Class/Componentised.pm b/lib/DBIx/Class/Componentised.pm index 10b91e9..17eb4f3 100644 --- a/lib/DBIx/Class/Componentised.pm +++ b/lib/DBIx/Class/Componentised.pm @@ -8,6 +8,8 @@ use base 'Class::C3::Componentised'; use Carp::Clan qw/^DBIx::Class|^Class::C3::Componentised/; use mro 'c3'; +my $warned; + # this warns of subtle bugs introduced by UTF8Columns hacky handling of store_column # if and only if it is placed before something overriding store_column sub inject_base { @@ -21,7 +23,7 @@ sub inject_base { $target->isa ('DBIx::Class::ForceUTF8') ); - my (@target_isa, $base_store_column); + my @target_isa; while ($keep_checking && @complist) { @@ -30,13 +32,21 @@ sub inject_base { my $comp = pop @complist; - if ($comp->isa ('DBIx::Class::UTF8Columns') || $comp->isa ('DBIx::Class::ForceUTF8') { - - $keep_checking = 0; + # warn here on use of either component, as we have no access to ForceUTF8, + # the author does not respond, and the Catalyst wiki used to recommend it + for (qw/DBIx::Class::UTF8Columns DBIx::Class::ForceUTF8/) { + if ($comp->isa ($_) ) { + $keep_checking = 0; # no use to check from this point on + carp "Use of $_ is strongly discouraged. See documentationm of DBIx::Class::UTF8Columns for more info\n" + unless ($warned->{UTF8Columns}++ || $ENV{DBIC_UTF8COLUMNS_OK}); + last; + } + } - $base_store_column ||= - do { require DBIx::Class::Row; DBIx::Class::Row->can ('store_column') }; + # something unset $keep_checking - we got a unicode mangler + if (! $keep_checking) { + my $base_store_column = do { require DBIx::Class::Row; DBIx::Class::Row->can ('store_column') }; my @broken; for my $existing_comp (@target_isa) {