development

이 database.yml 파일에서 &, <<, *의 의미는 무엇입니까?

big-blog 2020. 6. 19. 07:48
반응형

이 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별명 "기본"으로 개발 노드)와 *참조 이름이 "기본"으로 별칭 노드입니다. <<:해당 노드의 내용을 삽입합니다.

여기에서 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 기본으로 분류 된 그룹의 모든 속성을 포함 함을 의미합니다.


동일한 설정을 반복해서 반복하지 않고도 환경을 참조 할 수있는 방법입니다 (건조).

test: &test
  <<: *default

&test 특정 설정에 대한 참조를 만듭니다.

<<: *default 테스트에 기본 설정을 사용한다고 말합니다.

cucumber:
  <<: *test

이제 우리는 cucumber의 설정을 사용하고 싶다는 것을 알고 있습니다 test.


간단히 말해서이 개념은 기본 클래스와 파생 클래스와 유사합니다.

기본 클래스 템플리트에서 '&'로 모든 공통 세부 사항을 언급하므로이 필드가 필요한 다른 yaml 섹션을 확장하는 데 사용할 수 있습니다. 이제이 '기본 클래스'유형 구조의 구성 값으로 구성된 다른 섹션을 작성할 때 기본 클래스 앵커와 함께 '*'를 사용하십시오 (예 : '&'로 시작하는 섹션). 실제로 'base class'섹션을 배치하기 위해 '<< :'을 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

그러나 확장 필드를 무시하지 않으려면 '<< :'를 건너 뛸 수 있습니다.

참고URL : https://stackoverflow.com/questions/6651275/what-do-the-mean-in-this-database-yml-file

반응형