В моей компании у нас действительно есть и то и другое.
У нас есть приложение Rails, которое может указывать на одну из множества различных установок другого программного обеспечения и использовать API из этой установки. Чтобы указать установку, необходимо установить около 5 переменных.
У нас была каждая из этих переменных как отдельные переменные окружения, но их установка устарела очень быстро, и мы неизбежно забыли одну.
Итак, теперь у нас есть одна переменная среды, которую мы называем ENV_TOKEN, и у нас есть файлы yaml, которые содержат записи, соответствующие действительным переменным ENV_TOKEN, и код в config / initializer, который устанавливает ENV [ключ] = значение.
Итак, допустим, у меня есть переменные "FOO" и "BAR", которые я хочу установить в "one" и "two" соответственно. Я мог бы создать файл yaml, который содержит:
carolclarinet:
FOO: one
BAR: two
и тогда я установлю переменную окружения ENV_TOKEN на carolclarinet, а FOO и BAR - на один и два.
Я понятия не имею, если это лучший способ сделать это, но это работает для нас.
ETA: обратите внимание, что это только для разработки и тестирования, установщик нашего программного обеспечения заботится о настройке всего этого, чтобы наши клиенты никогда не меняли переменные среды.