1
Dist::Zilla::Plugin::Catalystのテストをリファクタリングして、より多くのDRYを実行しようとしていますが、タスクにMooseを使用しようとしていますが、私は彼らが何であるか把握することができません、そのうちのいくつかは注文の初期化の問題であるように見えました。エラーが発生したモーズモジュールは原因の特定に役立ちます
注:コードは、おそらく最高ではない、提案/で未定義の値に「サブディレクトリ」メソッドを呼び出すことはできません.......
トン/ 01-PluginCatalystNew.t歓迎ホーム/ xenoterracide /プロジェクト/ディスト - ジーラ・プラグイン・触媒/ .build/8kE7QQR_FL/T/libに/ DZPCshared.pm線26ここ
ムースモジュールの、
use strict;
use warnings;
package DZPCshared;
use Path::Class;
use Moose;
use namespace::autoclean;
has 'appname' => (
is => 'ro',
required => 1,
);
has 'tempdir' => (
is => 'ro',
required => 1,
);
has 'directories' => (
isa => 'ArrayRef[Str]',
traits => ['Array'],
is => 'ro',
required => 1,
lazy => 1,
default => sub {
my $self = shift;
my $mr = dir($self->tempdir)->subdir('mint');
my $mrl = $mr->subdir('lib');
my $mrr = $mr->subdir('root');
my $mrs = $mr->subdir('script');
my $mrt = $mr->subdir('t');
my $mrri = $mr->subdir('root')->subdir('static')->subdir('images');
return my $directories = [ $mr, $mrl, $mrr, $mrs, $mrt, $mrri ];
},
);
has 'scripts' => (
isa => 'ArrayRef[Str]',
traits => ['Array'],
is => 'ro',
default => sub {
my $self = shift;
my ($mr, $mrl, $mrr, $mrs, $mrt, $mrri) = @{ $self->directories };
my $lc_app = lc $self->appname;
return my $scripts = [
$mrs->file ($lc_app . '_cgi.pl' ),
$mrs->file ($lc_app . '_create.pl' ),
$mrs->file ($lc_app . '_fastcgi.pl'),
$mrs->file ($lc_app . '_server.pl' ),
$mrs->file ($lc_app . '_test.pl' ),
];
},
);
has 'files' => (
isa => 'ArrayRef[Str]',
traits => ['Array'],
is => 'ro',
default => sub {
my $self = shift;
my ($mr, $mrl, $mrr, $mrs, $mrt, $mrri) = @{ $self->directories };
my $lc_app = lc $self->appname;
return my $files = [
$mr->file ($lc_app . '.conf' ),
$mrl->file ($self->app_name . '.pm' ),
$mrl->subdir($self->app_name)->subdir('Controller')->file('Root.pm'),
$mrr->file ('favicon.ico' ),
$mrri->file ('btn_120x50_built.png' ),
$mrri->file ('btn_120x50_built_shadow.png' ),
$mrri->file ('btn_120x50_powered.png' ),
$mrri->file ('btn_120x50_powered_shadow.png'),
$mrri->file ('btn_88x31_built.png' ),
$mrri->file ('btn_88x31_built_shadow.png' ),
$mrri->file ('btn_88x31_powered.png' ),
$mrri->file ('btn_88x31_powered_shadow.png' ),
$mrri->file ('catalyst_logo.png' ),
$mrt->file ('01app.t' ),
];
},
);
__PACKAGE__->meta->make_immutable;
1;
とテスト
(注:p.s.
(注)必ず、最小限のテストケースは、この中で可能ではありません。また、previous versionが働いていた)
ありがとう、これは私を夢中にさせていました。私はすべての組み合わせを試してみたに違いないと思っています...または私はちょうど混乱していた他のエラーがあるので。私は別の時間を費やして作業しました。最後のバグを根絶するために管理しました – xenoterracide
@xenoterracide私はディレクトリのデフォルトハンドラに '$ self'のダンプを追加して、それが空のblessed hashrefであることを認識しました。だから私はいくつかの出力を持つ小さな 'BUILD'メソッドを追加し、実際にBUILDの前にデフォルトのハンドラが呼び出されているのを見ました。 – bvr