Si hallas algún problema en tu código o trabajo, recuerda probar siempre en un entorno de testing antes aplicar el código al trabajo final.
Solución:
Después de una breve revisión del libro de cocina YAML citado en la pregunta y algunas pruebas, esta es mi interpretación:
- En general, no necesita comillas.
- Use comillas para forzar una stringpor ejemplo, si su key o el valor es
10
pero quiere que devuelva un String y no un Fixnum, escriba'10'
o"10"
. - Utilice comillas si su valor incluye caracteres especiales (p. ej.
:
,,
,
[
,]
,,
,&
,*
,#
,?
,|
,-
,<
,>
,=
,!
,%
,@
,).
- Las comillas simples le permiten poner casi cualquier carácter en su stringy no intentará analizar los códigos de escape.
'n'
sería devuelto como el stringn
. - Las comillas dobles analizan los códigos de escape.
"n"
se devolvería como un carácter de avance de línea. - El signo de exclamación introduce un método, por ejemplo
!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:
en:
yesno:
'yes': 'Yes'
'no': 'No'
Tenía esta preocupación cuando trabajaba en un Rieles aplicación con Estibador.
Mi enfoque preferido es generalmente no usa comillas. Esto incluye no usando comillas para:
- variables como
$RAILS_ENV
- valores separados por dos puntos (:) como
postgres-log:/var/log/postgresql
- otros valores de cadenas
Yo, sin embargo, uso comillas dobles para integer
valores que deben convertirse en cadenas como:
- versión docker-compose como
version: "3.8"
- números de puerto como
"8080:8080"
Sin embargo, para casos especiales como booleans
, floats
, integers
y otros casos, donde el uso de comillas dobles para los valores de entrada podría interpretarse como strings
Por favor, hazlo no utilice comillas dobles.
aquí hay una muestra docker-compose.yml
archivo para explicar este concepto:
version: "3"
services:
traefik:
image: traefik:v2.2.1
command:
- --api.insecure=true # Don't do that in production
- --providers.docker=true
- --providers.docker.exposedbydefault=false
- --entrypoints.web.address=:80
ports:
- "80:80"
- "8080:8080"
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
Eso es todo.
espero que esto ayude
Sección de Reseñas y Valoraciones
Eres capaz de patrocinar nuestra tarea exponiendo un comentario o dejando una valoración te damos las gracias.