dependência de recurso fantoche

dependência de recurso fantoche

Quando aplico o fantoche, recebo o erro:

Warning: Scope(Mod::Cl[title]): Can't load '/tmp/file.yaml' File does not exist!
Error: Evaluation Error: Error while evaluating a Resource Statement, Evaluation Error: Operator '[]' is not applicable to an Undef Value.

Eu especifico que loadyaml é uma função do módulo stdlib

No entanto, quero executar o recurso de arquivo antes de definir o recurso

Alguém pode me ajudar ?

classe mod::princ (

    arquivo { '/tmp/arquivo.yaml':
        garantir => arquivo,
        proprietário => 'raiz',
        grupo => 'raiz',
        modo => '0644',
        fonte => "fantoche:///modules/othermod/file.yaml",
        antes => Mod::Cl["título"],
    }->
    Mod::Cl{ "título" :
        tmp_file => "/tmp/arquivo.yaml",
    }

}

definir mod::cl (
    String $tmp_file,
){

    $tmp = loadyaml("$tmp_file")

    $tmp[var].each |Inteiro $i, Hash[String,String] $var|
    {
      $marca=$var['Marca']
    }

}

Responder1

Pela minha experiência com fantoches, coisas como "antes"/"exigir" e sequenciamento (->) não funcionam muito bem juntas. Tente remover o sequenciamento, pois provavelmente o arquivo não está sendo criado...

Responder2

Conforme especificado na chamada da função fantochepágina de referência, as funções são chamadas em tempo de compilação, portanto, não importa qual seja a ordem, a função será chamada antes que o módulo seja executado.

informação relacionada