Comprender cómo funciona esta gema rspec

Estoy tratando de hacer que esta joya funcione, pero no tengo mucha suerte. Aunque esto está relacionado con los títeres, espero que mis preguntas no lo estén.

Estoy tratando de entender lo que sigue :rspec si la declaración implica:

module RSpecHieraPuppet
  module HieraDefaultConfiguration
    extend RSpec::SharedContext
    let(:hiera_config) do
      { :backends => ['rspec'],
        :rspec => respond_to?(:hiera_data) ? hiera_data : {} } # this one
    end
  end
end

Fuente: https://github.com/amfranz/rspec-hiera-puppet/blob/master/lib/rspec-hiera-puppet/rspec.rb

¿Alguien puede aclarar qué ? hiera_data significa aquí? Parece que no puedo encontrar ninguna referencia en la fuente de la gema.

Según tengo entendido, a partir del uso de ejemplo de la gema, la respuesta está buscando el desencadenante en la respuesta de ejemplo:

let(:hiera_data) do
  {  
    :key123  => ['abc'],
  }
end

Pero parece que no puedo rastrear lo que sucede después de que se activa porque no veo ninguna conexión con rspec_backend.rb archivo que se encarga de manejar esto.

Cualquier ayuda para rastrear las llamadas realizadas aquí sería apreciada. (gem solo tiene 3 archivos para trabajar)

preguntado el 07 de marzo de 13 a las 22:03

1 Respuestas

Parece que si ha definido un

let(:hiera_data) { {:key => 'value'} }

ese será el valor de la clave :rspec. Eso es porque en ese caso el objeto en el alcance responde a hiera_data. De lo contrario, el valor será {}.

Para obtener información sobre la sintaxis de respond_to? leer aquí

Creo que eso es lo que estás preguntando.

respondido 08 mar '13, 16:03

Estaba confundido en cuanto a qué hiera_data es. Soy bastante nuevo en Ruby, así que no podía entender por qué respond_to busca el símbolo hiera_data y por qué el verdadero valor de la declaración no es un símbolo - Kartik

Esa es la sintaxis de respond_to?; pasa el nombre del método que está buscando como un símbolo. Si es verdadero, en realidad está llamando (enviando) el método a sí mismo. He agregado un enlace en mi respuesta con información sobre respond_to? - roca

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.