Что делать &,


до сих пор я использовал только базу данных.yml с каждым параметром вызывается явно, в файле ниже он использует некоторые символы, которые я не понимаю. Что означает каждая строка и символ (&,*,

development: &default
  adapter: postgresql
  database: dev_development

test: &test
  <<: *default
  database: test_test


cucumber:
  <<: *test

production:
  <<: *default
  database: test_production
5 119

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

но, если вы не хотите переопределять расширенные поля, вы можете пропустить '