Подтвердить что ты не робот

Множество уровней в YAML

Я пытаюсь использовать YAML для создания списка всех сохраненных процессов, используемых в приложении, и откуда они вызывается. Я предвидел что-то вроде ниже, но я думаю, что YAML не допускает многоуровневую вложенность.

access_log:
  stored_proc: getsomething
    uses:
      usedin: some->bread->crumb
      usedin: something else here
  stored_proc: anothersp
    uses:
      usedin: blahblah

reporting:
  stored_proc: reportingsp
    uses:
      usedin: breadcrumb

Есть ли способ сделать это в YAML, а если нет, то какие существуют другие альтернативы?

4b9b3361

Ответ 1

Именно так я использовал вложенные уровни в YAML для файлов конфигурации для perl-скриптов. Это учебное пособие по YAML может быть хорошей ссылкой для вас о том, как обрабатывать структуру, которую вы хотите в Ruby.

Я думаю, ваша проблема пытается смешивать типы. Я предлагаю пересмотреть вот так:

reporting:
  stored_procs:
    reportingsp
      uses:
        usedin: breadcrumb
    secondProc
      uses:
        usedin: something_else

Ответ 2

Как отмечено @Ilion, вы не можете иметь свойство, указывающее как на строку, так и на объект; вам нужен либо массив, либо дать ярлык вашим именам stored_proc. Кроме того, вы продолжаете работать над вашими ключами, используя одно и то же имя, когда то, что вы действительно хотите, это массив. Вот простой пример и доказательство того, что он работает:

MY_YAML = "
access_log:
  - 
    name: getsomething
    uses:
      - some->bread
      - something else here
  -
    name: anothersp
    uses:
      - blahblah"

require 'yaml'
require 'pp'
pp YAML.load(MY_YAML)
#=> {"access_log"=>[
#=>   {"name"=>"get something", "uses"=>["some->bread", "something else here"]},
#=>   {"name"=>"anothersp", "uses"=>["blahblah"]}
#=> ]}

Ответ 3

---
access_log:  
  - stored_proc: getsomething    
  - uses:     
    - usedin: some->bread->crumb      
    - usedin: something else here  
    - stored_proc: anothersp      
  - uses:     
    - usedin: blahblah
reporting:
  - stored_proc: reportingsp    
  - uses:       
    - usedin: breadcrumb