in der DBIx::Class::Schema::Loader verbinden wir mit dem temporären Schema.
Wenn die Verbindung treten das Schema cloned
Aber wegen der dort nur schema name is passed nichts cloned ist und, als Ergebnis, leere Klassenzuordnung hat. Was falsch ist.
Wenn Sie genau hinsehen, werden Sie sehen, dass das Klonen zweimal erfolgt: here und here. Dieses zusätzliche Klonen ist verschwenderisch und sollte refaktoriert werden.
Da die Arbeiten rund um here sollte in die erforderlichen Namespace geklont Schema reblessed überbrückbar:
sub _make_schema_at {
my ($self, $name, %extra_opts) = @_;
my $schema = $self->schema->clone;
bless $schema, $name;
DBIx::Class::Schema::Loader::make_schema_at
$schema, {_merge_opts(%extra_opts)}, [{_rearrange_connect_info($schema->storage)}];
}
UPD
Lately, wenn neue Lader erstellt wird, wird die naming
-current
statt übergebene Argument gezwungen , die wiederum aus dem Anwendungsschema geklont wird. (Ich überprüfe das nicht, aber wenn die Anwendung ihre eigene naming
hat, verursacht dies Probleme beim Dumping von Daten) und loader is invoked again. Hier Loader lädt Klassen based on table names statt Paketnamen (wie es bei __PACKAGE__->load_namespaces(...)
geschieht)
Schließlich @to_register
Listen unterscheiden:
Here
[
Ip,
App::Schema0::Result::Ip,
]
[
Scheta,
App::Schema0::Result::Scheta,
]
Here:
[
IP,
App::Schema::Result::IP,
],
[
Schet,
App::Schema::Result::Schet,
],
Könnte eine Pluralisierung sein Problem. DBIx :: Class :: Schema :: Loader (und wahrscheinlich die anderen Dinge für automatisches Datendumping) generieren Ergebnis-/Tabellennamen auf der Grundlage von Regeln, um Wörter in Singular und Plural umzuwandeln. Sie sehen oft ein 's' am Ende. Manchmal ist es sogar schlauer, und DBIC enthält eine Menge Module als Abhängigkeiten für verschiedene Sprachen, um mehrere Moniker für Dinge zu machen. Aber wenn Ihre Tabellen in einer Sprache sind, die sie nicht unterstützt (wie Deutsch oder wahrscheinlich Russisch, besonders wenn sie transkribiert ist), könnte sie fehlschlagen. Vielleicht haben die DCSL und Fixtures verschiedene Namen erstellt? – simbabque
@simbabque: Ich habe [this] gefunden (http://search.cpan.org/~ilmari/DBIx-Class-Schema-Loader/lib/DBIx/Class/Schema/Loader/Base.pm#naming). Heute plane ich, damit zu experimentieren. –