Что делать &,
до сих пор я использовал только базу данных.yml с каждым параметром вызывается явно, в файле ниже он использует некоторые символы, которые я не понимаю. Что означает каждая строка и символ (&,*,
development: &default
adapter: postgresql
database: dev_development
test: &test
<<: *default
database: test_test
cucumber:
<<: *test
production:
<<: *default
database: test_production
5 ответов:
The
&
знаков псевдоним для узла (в вашем примере&default
псевдонимы узла разработки как "по умолчанию") и*
ссылается на псевдоним узла с именем "default". Элемент<<:
вставляет содержимое этого узла.позвольте мне процитировать спецификацию YAML здесь:
повторяющиеся узлы (объекты) сначала идентифицируются с помощью якоря (отмеченного амперсандом -"&"), а затем сглаживаются (со звездочкой - "*") впоследствии.
так что части вашего примера
test: &test <<: *default
на самом деле расширить до
test: &test adapter: postgresql # from the "default" alias database: dev_development # from the "default" alias
и в то же время сделайте узел "test" также доступным под псевдонимом "test". взгляните на спецификация и YAML - 2.2 структуры для более подробной информации (или если вам нужно даже moar docs++:3.2.2.2. Якоря и псевдонимы)
Они представляют ссылки на узлы ( * ) и слияния ассоциативных массивов ( Википедия
попробуйте сами онлайн.
&default
означает, что вы маркируете этот набор атрибутов с некоторым именем для последующего использования
<<: *default
означает, что вы включаете все атрибуты из группы, помеченной как default
это способ ссылаться на окружающую среду без необходимости повторять одни и те же настройки снова и снова (высушить его).
test: &test <<: *default
&test
создает ссылку на эти конкретные параметры.
<<: *default
говорит, использовать настройки по умолчанию для тестcucumber: <<: *test
так что теперь мы знаем, что для
cucumber
мы хотим использовать параметрыtest
.
простыми словами, это понятие напоминает с базовым и производным классом.
в шаблоне базового класса вы упоминаете все общие сведения с помощью'&', что означает, что его можно использовать для расширения другого раздела yaml, которому нужны эти поля. Теперь, когда вы создаете другой раздел, который является надмножеством значений конфигурации этой структуры типа "базовый класс", вы используете " * "вместе с привязкой базового класса (т. е. тот, который начался с"&"). Вы используете'
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
но, если вы не хотите переопределять расширенные поля, вы можете пропустить '