Commit | Line | Data |
227d4dee |
1 | package DBIx::Class::Componentised; |
2 | |
3 | sub inject_base { |
4 | my ($class, $target, @to_inject) = @_; |
5 | { |
6 | no strict 'refs'; |
7 | unshift(@{"${target}::ISA"}, grep { $target ne $_ } @to_inject); |
8 | } |
9 | } |
10 | |
11 | sub load_components { |
12 | my $class = shift; |
13 | my @comp = map { "DBIx::Class::$_" } grep { $_ !~ /^#/ } @_; |
14 | $class->_load_components(@comp); |
15 | } |
16 | |
17 | sub load_own_components { |
18 | my $class = shift; |
19 | my @comp = map { "${class}::$_" } grep { $_ !~ /^#/ } @_; |
20 | $class->_load_components(@comp); |
21 | } |
22 | |
23 | sub _load_components { |
24 | my ($class, @comp) = @_; |
25 | foreach my $comp (@comp) { |
26 | eval "use $comp"; |
27 | die $@ if $@; |
28 | } |
29 | $class->inject_base($class => @comp); |
30 | } |
31 | |
32 | 1; |