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 ''<<:''
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