SL::DB::BackgroundJob: refactoring von set_data für mehr programmatische Sicherheit
authorMoritz Bunkus <m.bunkus@linet-services.de>
Mon, 13 Apr 2015 10:52:58 +0000 (12:52 +0200)
committerMoritz Bunkus <m.bunkus@linet-services.de>
Mon, 13 Apr 2015 10:52:58 +0000 (12:52 +0200)
$self->data kann durchaus leer sein, und dann gibt YAML::Load schlicht
einen leeren String und keine Hashref zurück.

Daher $self->data_as_hash benutzen, das bereits für die meisten Fälle
gewappnet ist. Außerdem einfachere Hash-Zuweisung.

SL/DB/BackgroundJob.pm

index 10e319b..2040297 100644 (file)
@@ -84,9 +84,10 @@ sub data_as_hash {
 sub set_data {
   my ($self, %data) = @_;
 
-  my $data = YAML::Load($self->data);
-  $data->{$_} = $data{$_} for keys %data;
-  $self->data(YAML::Dump($data));
+  $self->data(YAML::Dump({
+    %{ $self->data_as_hash },
+    %data,
+  }));
 
   $self;
 }