Как составить список ассоциативного массива в yaml
Я пытаюсь сохранить некоторые переменные конфигурации в yaml, представленные в виде ассоциативного массива aka dictionary.
Вот как я это сделал:
content_prices:
- {country: AU, price: 6990000}
- {country: AT, price: 4990000}
- {country: BE, price: 4990000}
Это создает исключение, когда я пытаюсь проанализировать его из моих файлов инициализации ROR:
undefined метод `symbolize_keys! ' для nil: NilClass
Вот как я его инициализирую:
Config = YAML.load_file("#{Rails.root}/config/prices.yml")[Rails.env].symbolize_keys!
Я предполагаю, что синтаксис yaml неверен, а затем как правильно его записать?
Ответы
Ответ 1
Ваш YAML выглядит хорошо, или вы можете настроить массив хэшей следующим образом:
content_prices:
- country: AU
price: 6990000
- country: AT
price: 4990000
- country: BE
price: 4990000
Будет загружаться как следующий хеш:
{"content_prices"=>[
{"country"=>"AU", "price"=>6990000},
{"country"=>"AT", "price"=>4990000},
{"country"=>"BE", "price"=>4990000}]}
Но это все еще не дает вам никакой ссылки на Rails.env
в основном хэше. Проблема заключается в том, что вы ожидаете быть в своем хеше, а не в формате YAML.
Ответ 2
Не на рельсах, но на Symfony2 php мне пришлось настроить файл yml следующим образом:
content_prices:
-
country: AU
price: 6990000
-
country: AT
price: 4990000
-
country: BE
price: 4990000
Ответ 3
На случай, если кто-то захочет использовать динамические ключи, это также возможно:
AppBundle\Service\MailerService:
lazy: false
arguments:
$defaultFrom:
'%mailer_user%': '%mailer_name%'