use DBIx::Class::Schema::Loader::RelBuilder;
use Data::Dump qw/ dump /;
use POSIX qw//;
+use File::Spec qw//;
require DBIx::Class;
__PACKAGE__->mk_ro_accessors(qw/
sub _load_external {
my $self = shift;
+ my $abs_dump_dir;
+
+ $abs_dump_dir = File::Spec->rel2abs($self->dump_directory)
+ if $self->dump_directory;
+
foreach my $table_class (values %{$self->classes}) {
$table_class->require;
if($@ && $@ !~ /^Can't locate /) {
warn qq/# Loaded external class definition for '$table_class'\n/
if $self->debug;
- if($self->dump_directory) {
+ if($abs_dump_dir) {
my $class_path = $table_class;
$class_path =~ s{::}{/}g;
$class_path .= '.pm';
- my $filename = $INC{$class_path};
+ my $filename = File::Spec->rel2abs($INC{$class_path});
croak 'Failed to locate actual external module file for '
. "'$table_class'"
if !$filename;
+ next if($filename =~ /^$abs_dump_dir/);
open(my $fh, '<', $filename)
or croak "Failed to open $filename for reading: $!";
$self->_raw_stmt($table_class,
my ($self, $class) = (@_);
my @name_parts = split(/::/, $class);
- pop @name_parts;
+ pop @name_parts; # we don't care about the very last element,
+ # which is a filename
+
my $dir = $self->dump_directory;
foreach (@name_parts) {
- $dir .= q{/} . $_;
+ $dir = File::Spec->catdir($dir,$_);
if(! -d $dir) {
mkdir($dir) or croak "mkdir('$dir') failed: $!";
}