ruby-on-rails database-connection yaml alias cross-reference

ruby on rails - ¿Qué significa el &,<<,*en este archivo database.yml?



ruby-on-rails database-connection (5)

El & marca un alias para el nodo (en su ejemplo &default alias &default el nodo de desarrollo como "predeterminado") y el * referencia al nodo con alias con el nombre "predeterminado". El <<: inserta el contenido de ese nodo.

Permítanme citar la especificación YAML aquí:

Los nodos repetidos (objetos) primero se identifican mediante un anclaje (marcado con el signo y - "&"), y luego se alias (a los que se hace referencia con un asterisco - "*") a partir de entonces.

entonces partes de tu ejemplo

test: &test <<: *default

en realidad ampliar a

test: &test adapter: postgresql # from the "default" alias database: dev_development # from the "default" alias

y al mismo tiempo, haga que el nodo "prueba" esté también disponible bajo el alias "prueba". eche un vistazo a la especificación YAML - 2.2 Estructuras para más detalles (o si necesita incluso documentos moar ++: 3.2.2.2. Anclajes y alias )

Hasta ahora solo había usado database.yml con cada parámetro llamado explícitamente, en el siguiente archivo usa algunos caracteres que no entiendo. ¿Qué significa cada línea y símbolo (&, *, <<), cómo leo este archivo?

development: &default adapter: postgresql database: dev_development test: &test <<: *default database: test_test cucumber: <<: *test production: <<: *default database: test_production


En palabras simples, esta noción se asemeja a la clase base y derivada.

En la plantilla de la clase base, mencionas todos los detalles comunes con ''&'', lo que significa que puede usarse para expandir la otra sección yaml que necesita estos campos. Ahora cuando crea otra sección que es un superconjunto de valores de configuración de esta estructura de tipo ''clase base'', usa el ''*'' junto con el anclaje de clase base (es decir, el que comenzó con ''&''). Utiliza ''<<:'' como noción yaml para colocar realmente la sección ''clase base'', que puede anular más tarde.

vsm: stub_nsx_mgr: &MGR_CTRL_STUB username: ADMIN password: $DEFAULT_PASSWORD deployment: ovf build: $PR_BUILD vmnics: - network: $MANAGEMENT_NETWORK_0 vc: vc_0 ovf_options: - --diskMode=$DISKMODE - --deploymentOption=$DEPLOYMENT_OPTION $MGR_0: <<: *MGR_CTRL_STUB ovf_path_regex: ''appliance.*/.ovf'' ovf_options: - --diskMode=$DISKMODE - --deploymentOption=$DEPLOYMENT_OPTION $CTRL_0: <<: *MGR_CTRL_STUB ovf_options: - --diskMode=$DISKMODE - --allowExtraConfig $CTRL_1: *MGR_CTRL_STUB

Pero, si no desea anular los campos extendidos, puede omitir ''<<:''


Representan referencias de nodos (*) y combinaciones de matrices asociativas (<<) que hacen referencia a un nodo etiquetado con una etiqueta de anclaje (&) - wikipedia

Pruébelo usted mismo en online .


Son una forma de referenciar entornos sin tener que repetir la misma configuración una y otra vez (SECARLA).

test: &test <<: *default

&test crea una referencia a esas configuraciones específicas.

<<: *default dice usar la configuración predeterminada para la prueba

cucumber: <<: *test

Entonces ahora sabemos que para cucumber queremos usar la configuración de test .


&default significa que está etiquetando este conjunto de atributos con algún nombre para su uso posterior

<<: *default significa que está incluyendo todos los atributos del grupo etiquetado como predeterminado