Estoy tratando de escribir un diccionario YAML para la internacionalización de un proyecto Rails. Sin embargo, estoy un poco confundido, ya que en algunos archivos veo cadenas entre comillas dobles y en otras sin comillas. Algunos puntos a considerar:
- ejemplo 1 : todas las cadenas usan comillas dobles;
- ejemplo 2 : sin cadenas (excepto las dos últimas) se utilizan comillas;
- el libro de cocina de YAML dice: El encerrar cadenas entre comillas dobles le permite usar escapes para representar caracteres ASCII y Unicode. ¿Significa esto que necesito usar comillas dobles solo cuando quiero escapar de algunos caracteres? En caso afirmativo, ¿por qué usan comillas dobles en todas partes en el primer ejemplo, solo por razones de unidad / estilísticas?
- usan las dos últimas líneas del ejemplo 2
!
, la etiqueta no específica, mientras que las dos últimas líneas del primer ejemplo no lo hacen, y ambas funcionan.
Mi pregunta es: ¿cuáles son las reglas para usar los diferentes tipos de citas en YAML?
Podría decirse que:
- en general, no necesita comillas;
- si quieres escapar de los caracteres usa comillas dobles;
- usar
!
con comillas simples, cuando ...?!?
Respuestas:
Después de una breve revisión del libro de cocina YAML citado en la pregunta y algunas pruebas, aquí está mi interpretación:
10
pero desea que devuelva una cadena y no un Fixnum, escriba'10'
o"10"
.:
,{
,}
,[
,]
,,
,&
,*
,#
,?
,|
,-
,<
,>
,=
,!
,%
,@
,\
).'\n'
sería devuelto como la cadena\n
."\n"
se devolvería como un carácter de avance de línea.!ruby/sym
para devolver un símbolo Ruby.Me parece que el mejor enfoque sería no usar comillas a menos que sea necesario, y luego usar comillas simples a menos que específicamente desee procesar códigos de escape.
Actualizar
"Sí" y "No" deben ir entre comillas (simples o dobles) o se interpretarán como valores TrueClass y FalseClass:
fuente
@
y `se puede usar en cualquier lugar de una cadena simple, excepto al principio, porque son indicadores reservados .Tenía esta preocupación cuando trabajaba en una aplicación Rails con Docker .
Mi enfoque más preferido es generalmente no usar comillas. Esto incluye no usar comillas para:
${RAILS_ENV}
postgres-log:/var/log/postgresql
Sin embargo, uso comillas dobles para los
integer
valores que deben convertirse en cadenas como:version: "3.8"
"8080:8080"
Sin embargo, para casos especiales como
booleans
,floats
,integers
, y otros casos, en los que utilizan comillas para los valores de entrada podrían ser interpretadas comostrings
, por favor, no utilice comillas dobles.Aquí hay un
docker-compose.yml
archivo de muestra para explicar este concepto:Eso es todo.
espero que esto ayude
fuente