X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalyst%2FHelper%2FModel%2FDBIC%2FSchema.pm;h=01c0d7dfea352c2149a1a2eac044a85bf7d61d80;hb=ca7cf6f02f7378154b24cc6a6d4c66dee50cf902;hp=3567c9fc81924f796e1929dcc8a61554afdc5a6a;hpb=41bcf32fb6ca94efe78f9b67d564357dbf291b1f;p=catagits%2FCatalyst-Model-DBIC-Schema.git diff --git a/lib/Catalyst/Helper/Model/DBIC/Schema.pm b/lib/Catalyst/Helper/Model/DBIC/Schema.pm index 3567c9f..01c0d7d 100644 --- a/lib/Catalyst/Helper/Model/DBIC/Schema.pm +++ b/lib/Catalyst/Helper/Model/DBIC/Schema.pm @@ -1,9 +1,11 @@ package Catalyst::Helper::Model::DBIC::Schema; +use namespace::autoclean; use Moose; no warnings 'uninitialized'; -our $VERSION = '0.24'; +our $VERSION = '0.30'; +$VERSION = eval $VERSION; use Carp; use Tie::IxHash (); @@ -11,12 +13,9 @@ use Data::Dumper (); use List::Util 'first'; use MooseX::Types::Moose qw/Str HashRef Bool ArrayRef/; use Catalyst::Model::DBIC::Schema::Types 'CreateOption'; -use Moose::Autobox; use List::MoreUtils 'firstidx'; use Scalar::Util 'looks_like_number'; -use namespace::clean -except => 'meta'; - =head1 NAME Catalyst::Helper::Model::DBIC::Schema - Helper for DBIC Schema Models @@ -162,7 +161,7 @@ sub mk_compclass { sub BUILD { my $self = shift; my $helper = $self->helper; - my @args = $self->args->flatten if $self->args; + my @args = @{ $self->args || [] }; $helper->{schema_class} = $self->schema_class; @@ -175,7 +174,7 @@ sub BUILD { $self->traits(\@traits); $helper->{traits} = '[' - .(join ',' => map { qq{'$_'} } ($self->traits->flatten)) + .(join ',' => map { qq{'$_'} } @traits) .']'; splice @args, $traits_idx, 1, (); @@ -189,16 +188,21 @@ sub BUILD { $self->_parse_loader_args(\@args); $helper->{loader_args} = $self->_build_helper_loader_args; + } + } - if (first { /^dbi:/i } @args) { - $helper->{setup_connect_info} = 1; + my $dbi_dsn_part; + if (first { ($dbi_dsn_part) = /^(dbi):/i } @args) { + die +qq{DSN must start with 'dbi:' not '$dbi_dsn_part' (case matters!)} + if $dbi_dsn_part ne 'dbi'; - $helper->{connect_info} = - $self->_build_helper_connect_info(\@args); + $helper->{setup_connect_info} = 1; - $self->_parse_connect_info(\@args); - } - } + $helper->{connect_info} = + $self->_build_helper_connect_info(\@args); + + $self->_parse_connect_info(\@args); } $helper->{generator} = ref $self; @@ -270,7 +274,7 @@ sub _read_loader_args { my %loader_args; - while (@$args && $args->[0] !~ /^dbi:/) { + while (@$args && $args->[0] !~ /^dbi:/i) { my ($key, $val) = split /=/, shift(@$args), 2; if ($self->_is_struct($val)) { @@ -401,7 +405,7 @@ sub _get_dsn_user_pass { if ($dsn =~ /sqlite/i) { ($user, $password) = ('', ''); - shift @$connect_info while $connect_info->[0] eq ''; + shift @$connect_info while @$connect_info and $connect_info->[0] eq ''; } else { ($user, $password) = splice @$connect_info, 0, 2; }