diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Bread/Board/Declare/Meta/Role/Attribute/Service.pm | 3 | ||||
-rw-r--r-- | lib/Bread/Board/Declare/Role/Object.pm | 3 |
2 files changed, 4 insertions, 2 deletions
diff --git a/lib/Bread/Board/Declare/Meta/Role/Attribute/Service.pm b/lib/Bread/Board/Declare/Meta/Role/Attribute/Service.pm index 935e5cb..b1db7fd 100644 --- a/lib/Bread/Board/Declare/Meta/Role/Attribute/Service.pm +++ b/lib/Bread/Board/Declare/Meta/Role/Attribute/Service.pm @@ -170,10 +170,11 @@ after attach_to_class => sub { ); } else { + my $name = $self->name; $service = Bread::Board::Declare::BlockInjection->new( %params, block => sub { - die "Attribute " . $self->name . " did not specify a service." + die "Attribute $name did not specify a service." . " It must be given a value through the constructor or" . " writer method before it can be resolved." }, diff --git a/lib/Bread/Board/Declare/Role/Object.pm b/lib/Bread/Board/Declare/Role/Object.pm index ad1f80a..1c5f244 100644 --- a/lib/Bread/Board/Declare/Role/Object.pm +++ b/lib/Bread/Board/Declare/Role/Object.pm @@ -23,11 +23,12 @@ after BUILD => sub { ); for my $service ($meta->get_all_services) { if ($service->isa('Bread::Board::Declare::BlockInjection')) { + Scalar::Util::weaken(my $weakself = $self); my $block = $service->block; $self->add_service( $service->clone( block => sub { - $block->(@_, $self) + $block->(@_, $weakself) }, ) ); |