J'essaie d'écrire un dictionnaire YAML pour l'internationalisation d'un projet Rails. Je suis un peu confus cependant, car dans certains fichiers, je vois des chaînes entre guillemets et dans certains sans. Quelques points à considérer:
- exemple 1 - toutes les chaînes utilisent des guillemets doubles;
- exemple 2 - aucune chaîne (sauf les deux dernières) utilise des guillemets;
- le livre de recettes YAML dit: Mettre des chaînes entre guillemets vous permet d'utiliser des échappements pour représenter les caractères ASCII et Unicode. Est-ce à dire que je dois utiliser des guillemets doubles uniquement lorsque je veux échapper à certains caractères? Si oui - pourquoi utilisent-ils des guillemets partout dans le premier exemple - uniquement pour des raisons d'unité / de style?
- les deux dernières lignes de l'exemple 2 utilisent
!
- la balise non spécifique, contrairement aux deux dernières lignes du premier exemple - et elles fonctionnent toutes les deux.
Ma question est: quelles sont les règles d'utilisation des différents types de devis en YAML?
Pourrait-on dire que:
- en général, vous n'avez pas besoin de devis;
- si vous voulez échapper des caractères, utilisez des guillemets doubles;
- utiliser
!
avec des guillemets simples, quand ...?!?
Réponses:
Après une brève revue du livre de cuisine YAML cité dans la question et quelques tests, voici mon interprétation:
10
mais que vous voulez qu'elle renvoie une chaîne et non un Fixnum, écrivez'10'
ou"10"
.:
,{
,}
,[
,]
,,
,&
,*
,#
,?
,|
,-
,<
,>
,=
,!
,%
,@
,\
).'\n'
serait retourné comme chaîne\n
."\n"
serait retourné comme un caractère de saut de ligne.!ruby/sym
pour renvoyer un symbole Ruby.Il me semble que la meilleure approche serait de ne pas utiliser de guillemets sauf si vous le devez, puis d'utiliser des guillemets simples sauf si vous souhaitez spécifiquement traiter les codes d'échappement.
Mise à jour
"Oui" et "Non" doivent être placés entre guillemets (simples ou doubles), sinon ils seront interprétés comme des valeurs TrueClass et FalseClass:
la source
@
et `peut être utilisé n'importe où dans une chaîne ordinaire, sauf au début, car ce sont des indicateurs réservés .J'avais cette préoccupation lorsque je travaillais sur une application Rails avec Docker .
Mon approche préférée est généralement de ne pas utiliser de guillemets. Cela inclut de ne pas utiliser de guillemets pour:
${RAILS_ENV}
postgres-log:/var/log/postgresql
Cependant, j'utilise des guillemets doubles pour les
integer
valeurs qui doivent être converties en chaînes comme:version: "3.8"
"8080:8080"
Cependant, pour des cas particuliers comme
booleans
,floats
,integers
et d' autres cas où l' aide des guillemets doubles pour les valeurs d'entrée peuvent être interprétées commestrings
, s'il vous plaît ne pas utiliser des guillemets doubles.Voici un exemple de
docker-compose.yml
fichier pour expliquer ce concept:C'est tout.
J'espère que ça aide
la source