Co oznaczają&,<<, * w tej bazie danych.plik yml?

Do tej pory używałem tylko bazy danych.yml z każdym parametrem wywołanym jawnie, w pliku poniżej używa pewnych znaków, których nie rozumiem. Co oznacza każda linia i symbol ( & ,*,

development: &default
  adapter: postgresql
  database: dev_development

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


cucumber:
  <<: *test

production:
  <<: *default
  database: test_production
Author: dreftymac, 2011-07-11

5 answers

& oznacza alias dla węzła (w twoim przykładzie &default aliasuje węzeł deweloperski jako "domyślny"), a * odwołuje się do aliasowanego węzła z nazwą"domyślny". <<: wstawia zawartość tego węzła.

Pozwolę sobie zacytować YAML spec tutaj:

Powtarzające się węzły (obiekty) są najpierw identyfikowane przez kotwicę (oznaczoną ampersand -"&"), a następnie aliasowane (oznaczone gwiazdką -"*").

Więc części twojego przykład

test: &test
  <<: *default

Faktycznie rozwiń do

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

I jednocześnie udostępnić węzeł "test" pod aliasem "test". aby uzyskać więcej szczegółów, zajrzyj do YAML specification-2.2 Structures (lub jeśli potrzebujesz nawet Moar docs++: 3.2.2.2. Anchory i aliasy )

 141
Author: paukul,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-10-15 15:18:04

Reprezentują odwołania do węzłów ( * ) i scalenia tablicy asocjacyjnej ( wikipedia

Wypróbuj Sam online .

 9
Author: Sam Ruby,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-07-11 14:14:16

&default oznacza, że oznaczasz ten zestaw atrybutów jakąś nazwą do późniejszego użycia

<<: *default oznacza, że dołączasz wszystkie atrybuty z grupy oznaczone jako domyślne

 8
Author: keymone,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-07-11 14:13:06

Są sposobem na odniesienia do środowisk bez konieczności powtarzania tych samych ustawień w kółko(osuszanie).

test: &test
  <<: *default

&test tworzy odniesienie do tych konkretnych ustawień.

<<: *default mówi Użyj domyślnych ustawień dla testu

cucumber:
  <<: *test

Więc teraz wiemy, że dla cucumber chcemy użyć ustawień z test.

 2
Author: thenengah,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-07-11 14:13:38

W prostych słowach pojęcie to przypomina z klasą bazową i pochodną.

W szablonie klasy bazowej, wymieniasz wszystkie wspólne szczegóły za pomocą'&', co oznacza, że może być użyty do rozszerzenia innej sekcji yaml, która potrzebuje tych pól. Teraz, gdy tworzysz kolejną sekcję, która jest supersetem wartości konfiguracyjnych tej struktury typu' base class', używasz znaku ' * ' wraz z kotwicą klasy bazowej (tzn. tej zaczynającej się od '&'). Używasz'

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

Ale jeśli nie chcesz nadpisywać rozszerzonych pól, możesz pominąć '

 1
Author: Mohammad Shahid Siddiqui,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-07 16:29:38