
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.