Hasta ahora solo he usado database.yml con cada parámetro llamado explícitamente, en el archivo a continuación 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
ruby-on-rails
database-connection
yaml
alias
cross-reference
OpenCoderX
fuente
fuente
Respuestas:
Las
&
marcas de un alias para el nodo (en su ejemplo&default
alias del nodo de desarrollo como "default") y las*
referencias al nodo alias con el nombre "default". El<<:
inserta el contenido de ese nodo.Permítanme citar las especificaciones de YAML aquí:
Así que partes de tu ejemplo
en realidad ampliar a
y al mismo tiempo haga que el nodo "prueba" también esté disponible bajo el alias "prueba".
Eche un vistazo a la especificación YAML - Estructuras 2.2 para más detalles (o si necesita incluso documentos de moar ++: 3.2.2.2. Anclas y alias )
fuente
<<: *default
sobrescribirla. Con YAML produce{"development"=>{"adapter"=>"postgresql", "database"=>"dev_development"}, "test"=>{"adapter"=>"postgresql", "database"=>"test_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 etiquetados como predeterminadosfuente
Representan referencias de nodo (*) y combinaciones de matrices asociativas (<<) que se refieren a un nodo etiquetado con una etiqueta de anclaje (&) - wikipedia
Pruébelo usted mismo en línea .
fuente
Son una forma de referenciar entornos sin tener que repetir la misma configuración una y otra vez (SECARLO).
&test
crea una referencia a esas configuraciones específicas.<<: *default
dice usar la configuración predeterminada para la pruebaAsí que ahora sabemos que
cucumber
queremos usar la configuración detest
.fuente
En palabras simples, esta noción se parece a la clase base y derivada.
En la plantilla de clase base, mencionas todos los detalles comunes con '&', lo que significa que se puede usar 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 '*' junto con el ancla de clase base (es decir, la que comenzó con '&'). Utiliza '<<:' como noción yaml para colocar realmente la sección 'clase base', que puedes anular más adelante.
Pero, si no desea anular los campos extendidos, puede omitir '<<:'
fuente