Estoy tratando de almacenar algunas variables de configuración en yaml representadas como una matriz asociativa, también conocida como diccionario. Así es como lo hice:
content_prices:
- {country: AU, price: 6990000}
- {country: AT, price: 4990000}
- {country: BE, price: 4990000}
Esto produce una excepción cuando trato de analizarlo desde mis archivos de inicio ROR:
método indefinido `symbolize_keys! ' para cero: NilClass
Así es como lo inicio:
Config = YAML.load_file("#{Rails.root}/config/prices.yml")[Rails.env].symbolize_keys!
Supongo que mi sintaxis de yaml es incorrecta, entonces, ¿cómo escribirlo correctamente?

Respuestas:
Su YAML se ve bien, o puede configurar una matriz de hashes como este:
content_prices: - country: AU price: 6990000 - country: AT price: 4990000 - country: BE price: 4990000Que se cargará como el siguiente hash:
{"content_prices"=>[ {"country"=>"AU", "price"=>6990000}, {"country"=>"AT", "price"=>4990000}, {"country"=>"BE", "price"=>4990000}]}Pero eso todavía no le da ninguna referencia al
Rails.envhash principal. El problema parece ser lo que esperas que esté en tu hash en lugar del formato del YAML.fuente
key: - string1,key: ['string1', 'string2',y esta es una notación de objetos contemporánea para asociativa donde no se acepta la sintaxis anterior,- { param1: 'myvalue', param2: 'myvalue2' }stackoverflow.com/a/33136212/3419535 , stackoverflow.com/a/49814618/3419535No en rieles, sino en Symfony2 php, tuve que configurar el archivo yml de esta manera:
content_prices: - país: AU precio: 6990000 - país: AT precio: 4990000 - país: BE precio: 4990000fuente
En caso de que alguien quiera usar claves dinámicas, también es posible:
AppBundle\Service\MailerService: lazy: false arguments: $defaultFrom: '%mailer_user%': '%mailer_name%'fuente