Próbuję przechowywać niektóre zmienne konfiguracyjne w yaml reprezentowane jako tablica asocjacyjna aka słownik. Oto jak to zrobiłem:
content_prices:
- {country: AU, price: 6990000}
- {country: AT, price: 4990000}
- {country: BE, price: 4990000}
Powoduje to wyjątek, gdy próbuję przeanalizować go z moich plików init ROR:
niezdefiniowana metoda `symbolize_keys! ' dla nil: NilClass
Oto jak to zainicjowałem:
Config = YAML.load_file("#{Rails.root}/config/prices.yml")[Rails.env].symbolize_keys!
Myślę, że moja składnia yaml jest nieprawidłowa, więc jak ją poprawnie napisać?
Odpowiedzi:
Twój YAML wygląda dobrze lub możesz skonfigurować tablicę skrótów w następujący sposób:
content_prices: - country: AU price: 6990000 - country: AT price: 4990000 - country: BE price: 4990000
Który zostanie załadowany jako następujący hash:
{"content_prices"=>[ {"country"=>"AU", "price"=>6990000}, {"country"=>"AT", "price"=>4990000}, {"country"=>"BE", "price"=>4990000}]}
Ale to nadal nie daje żadnego odniesienia do
Rails.env
głównego skrótu. Wydaje się, że problemem jest to, czego spodziewasz się w swoim skrócie, a nie w formacie YAML.źródło
key: - string1
,key: ['string1', 'string2',
a to współczesna notacja obiektu dla stowarzyszeniowej gdzie powyższa składnia nie jest akceptowane,- { param1: 'myvalue', param2: 'myvalue2' }
stackoverflow.com/a/33136212/3419535 , stackoverflow.com/a/49814618/3419535Nie na szynach, ale na php Symfony2 musiałem skonfigurować plik yml tak:
źródło
Na wszelki wypadek, gdyby ktoś chciał użyć klawiszy dynamicznych, jest też możliwe:
AppBundle\Service\MailerService: lazy: false arguments: $defaultFrom: '%mailer_user%': '%mailer_name%'
źródło