no fantoche, qual é a diferença entre “include 'module :: config'” e “include ':: module :: config'”?

1

Eu herdei um módulo que contém a instrução include

include '::module::config'

mas depois de editar algumas coisas que parecem não estar relacionadas, isso não funciona mais e o fantoche reclama que:

    err: Could not retrieve catalog from remote server: Error 400 on SERVER: 
    Puppet::Parser::AST::Resource failed with error ArgumentError: Could not 
    find declared class ::module::config at /home/user/svn-workspace/puppet
    /user/modules /module/init.pp:28 on node host.acme.com

a menos que eu mude para:

include 'module::config'

então ele começa a funcionar novamente.

    
por Marc 30.01.2013 / 01:19

1 resposta

4

Usar :: no início especifica o escopo superior.

Se suas aulas são estruturadas de maneira normal, isso nunca deve importar. Pode importar se você tem classes com colisões de nomes; por exemplo, se você tiver uma turma em module::stuff e um módulo chamado stuff , então, um include stuff de dentro demodule::things incluirá module::stuff em vez de stuff .

Portanto, usar include ::stuff é uma solução alternativa para isso, informando a pesquisa que você deseja que seja o escopo superior. Esta solução alternativa está documentada aqui .

Então ... dê uma olhada na estrutura do seu módulo e veja se module::config é um sub-módulo do módulo que você está incluindo. Se não, então alguma outra coisa está causando o problema; você pode fornecer mais informações sobre quais alterações você fez?

    
por 30.01.2013 / 08:02

Tags