Saltar al contenido

YAML: ¿Necesito comillas para cadenas en YAML?

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 string n.
  • 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, integersy otros casos, donde el uso de comillas dobles para los valores de entrada podría interpretarse como stringsPor 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.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *