web-dev-qa-db-fra.com

Vérification conditionnelle dans le fichier yaml pour afficher le contenu approprié

Comment puis-je vérifier if / else dans le fichier yaml.

comme: 

 if %{attribute}
    attributes:
       shipping_comment: Shipping comment / Instructions
 else
    attributes:
       shipping_date: Date
6
Rajarshi Das

YAML est un langage de sérialisation de données, il n'est donc pas conçu pour contenir des instructions exécutables de style if/else: c'est la responsabilité du langage de programmation que vous utilisez.

Un exemple simple en Ruby pour déterminer quelle chaîne de configuration d'un fichier YAML à la sortie pourrait être la définition de votre fichier de configuration YAML comme suit:

data.yml

attributes:
  shipping_comment: Shipping comment / Instructions
  shipping_date: Date

Ensuite, dans votre programme, lisez le fichier et exécutez-y la condition:

shipping.rb

#!/usr/bin/env Ruby
require 'yaml'
config = YAML.load_file('data.yml')

attribute = true # your attribute to check here

if attribute
  puts config['attributes']['shipping_comment']
else
  puts config['attributes']['shipping_date']
end
9
Paul Fioravanti

Les fichiers .yaml prêts à l'emploi n'incluent aucune logique conditionnelle, car Paul Fioravanti dit:

YAML est un langage de sérialisation de données, il n'est donc pas destiné à contenir des instructions exécutables de style if/else: c'est la responsabilité du langage de programmation que vous utilisez.

Cependant, dans certains cas, tels que Infrastructure en tant que code, vous n’avez peut-être pas le luxe de trouver la solution de Paul. Dans ces cas, la plupart des outils d'infrastructure décents fournissent un moyen intégré de mise en œuvre de la logique conditionnelle.

Comme il semble que l’infra ne soit pas le domaine dans lequel vous souhaitez effectuer votre recherche, je ne vais pas entrer dans les détails sur la façon d’écrire chaque solution d’outils, mais pour tous ceux qui se retrouvent ici comme moi, les documents de ce type m’ont aidé et pourraient prouver utile pour vous:

1
Joe