2012-07-15 5 views
6

¿Cómo crear una bolsa de datos a partir de una receta y evitar la excepción cuando esa bolsa de datos ya existe?Creación de bolsas de datos del chef a partir de una receta

La documentación muestra que la creación de una bolsa de datos se realiza de esta manera:

new_databag = Chef::DataBag.new 
new_databag.name('unique_name') 
new_databag.save 

Esto funciona cuando la bolsa de datos no existe todavía, pero ¿cómo hacer que funcione si la bolsa de datos ya existe para que no se rompa el chef corre?

Respuesta

12

Intente utilizar el método de Chef :: bolsa de datos de list y comprobar si el nombre de su bolsa de datos está presente:

require 'chef/data_bag' 

unless Chef::DataBag.list.key?('unique_name') 
    new_databag = Chef::DataBag.new 
    new_databag.name('unique_name') 
    new_databag.save 
end 

Lo utilizo para hacer mis recetas más robusto, o lanzar un error más agradable si una bolsa de datos esperado no se puede encontrar en un servidor Chef.

+0

Creo que el "si Chef :: DataBag.list.key?" la prueba debe ser un menos. En ese caso, solo crea la nueva bolsa de datos si ya existe para pasar esa prueba. ¿Correcto? Gracias por señalar el patrón: D –

Cuestiones relacionadas