Comment inclure un fichier YAML à l'intérieur d'un fichier YAML en Ruby
Est-il une balise personnalisée en YAML pour ruby pour inclure un fichier YAML à l'intérieur d'un fichier YAML?
#E.g.:
--- !include
filename: another.yml
Un similaire question a été posée il y a quelques temps et il n'y a pas de réponse pertinente.
Je me demande si il y a un tag personnalisé pour Ruby similaire à cette un pour Python.
Double Possible de Comment puis-je inclure un fichier YAML l'intérieur d'une autre?
OriginalL'auteur Harish Shetty | 2010-02-17
Vous devez vous connecter pour publier un commentaire.
Si vous êtes dans les Rails, YAML peut inclure ERB.
Les combiner ensemble, et voici comment vous pouvez utiliser
<%= %>
pour inclure un fichier à partir d'un autre:base de données.yml
base de données.sqlite.yml
base de données.mysql.yml
OriginalL'auteur Mark Piper
J'ai trouvé un moyen de résoudre mon scénario à l'aide de ERB.
Je singe patché YAML un module pour ajouter deux nouvelles méthodes
J'ai trois fichiers YAML.
mod1_config.yml
mod2_config.yml
all_config.yml
Analyser le fichier yaml à l'aide de la méthode
YAML::load_erb
au lieu de la méthodeYAML::load
.Mises en garde:
private method 'include' called for Psych:Module (NoMethodError)
toute devine comment puis-je résoudre ce problème ? J'ai ajouté le fichier YAML module dansinitializers/yaml.rb
OriginalL'auteur Harish Shetty
Si votre but est d'éviter la duplication dans votre fichier YAML, n'inclut pas nécessairement fichier externe, je recommande de faire quelque chose comme ceci:
YAML::ENGINE.yamler = 'syck'
pour que cela fonctionne, stackoverflow.com/a/6140900/414220OriginalL'auteur skalee
Je suis en utilisant ceci:
load_config.rb (initialiseur)
Plus tard, vous pouvez accéder à la config valeurs en faisant:
OriginalL'auteur Pablo Torrecilla
!include
n'est pas une directive, mais une balise.il n'est pas une fonctionnalité de Python (ou PyYAML) mais une caractéristique de la "poze" de la bibliothèque:
les photos.configuration expose un défaut de la directive nommé inclure.
YAML spécification ne définit pas une telle balise standard.
!include
. J'espérais que quelqu'un l'a écrit une balise personnalisée similaire à la balise personnalisée dans "photos" de la bibliothèque. Je suppose que son temps d'écrire la balise personnalisée moi-même 🙂OriginalL'auteur Andrey
Si vous voulez juste d'hériter d'un autre fichier YAML, il est un joyau de fournir cette fonctionnalité vous demandez par l'extension de l'ruby YAML bibliothèque:
https://github.com/entwanderer/yaml_extend
https://rubygems.org/gems/yaml_extend
Utilisation
yaml_extend ajoute la méthode YAML#ext_load_file à YAML.
Cette méthode fonctionne comme l'original YAML#load_file, en l'étendant avec le fichier de l'héritage.
Exemples
-
De Base De L'Héritage
résultats dans
OriginalL'auteur user3232994
Dépend de ce que vous en avez besoin pour. Si vous avez besoin pour le transport de fichier, vous pouvez l'encoder en base64 interne fichier yaml.
OriginalL'auteur Rubycut