在这个database.yml文件中,&,<<,*是什么意思?

到目前为止,我只使用了database.yml,每个参数明确地调出来,在下面的文件中它使用了一些我不明白的字符。 每一行和符号(&,*,<<)是什么意思,我怎么读这个文件?

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

&标记节点的别名(在您的示例中, &default将开发节点别名为“default”), *引用具有名称“default”的别名节点。 <<:插入该节点的内容。

请允许我在这里引用YAML规范:

重复的节点(对象)首先由一个锚(用&符号 – “&”标记)标识,然后用别名(用星号“*”表示)。

所以你的例子的一部分

 test: &test <<: *default 

实际上扩大到

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

同时使“testing”节点也可以在别名“testing”下使用。 看看YAML规范 – 2.2结构的进一步细节(或者,如果你甚至需要莫纳尔文档++: 3.2.2.2。锚和别名 )

&default意味着你使用某个名字来标记这组属性,以备以后使用

<<: *default意味着您将包含标记为默认组的所有属性

这些表示节点引用(*)和关联数组合并(<<),引用标有锚(&)标签的节点 – 维基百科

在网上尝试一下。

它们是参考环境的一种方式,无需反复重复相同的设置(干起来)。

 test: &test <<: *default 

&test会创build对这些特定设置的引用。

<<: *default表示使用testing的默认设置

 cucumber: <<: *test 

所以现在我们知道,对于cucumber我们想使用test的设置。