Книга: Программирование на языке Ruby
14.4.2. Хранение переменных окружения в виде массива или хэша
14.4.2. Хранение переменных окружения в виде массива или хэша
Важно понимать, что объект ENV
— не настоящий хэш, а лишь выглядит как таковой. Например, мы не можем вызвать для него метод invert
; будет возбуждено исключение NameError
, поскольку такого метода не существует. Причина такой реализации в том, что существует тесная связь между объектом ENV
и операционной системой; любое изменение хранящихся в нем значений отражается на состоянии ОС, а такое поведение с помощью простого хэша не смоделируешь.
Однако имеется метод to_hash
, который вернет настоящий хэш, отражающим текущее состояние:
envhash = ENV.to_hash
val2var = envhash.invert
Получив такой хэш, мы можем преобразовать его к любому другому виду (например, в массив):
envarr = ENV.to_hash.to_a
Обратное присваивание объекту ENV
недопустимо, но при необходимости можно пойти обходным путем:
envhash = env.to_hash
# Выполняем произвольные операции... и записываем обратно в ENV.
envhash.each {|k,v| ENV[k] = v }
- 2.4. Переменные окружения
- 14.4. Переменные окружения
- 14.4.3. Импорт переменных окружения как глобальных переменных
- 9.4.1. Реализация графа в виде матрицы смежности
- Сохранение информации о пользователях при миграции
- Сохранение информации из Интернета
- Значения переменных по умолчанию
- Использование переменной окружения ISC_PATH
- Хранение конфигурации в системном реестре
- Новые функции API для работы с Blob и массивами
- Глава 15 Редактирование музыки и видео
- Сохранение рабочей книги с именем, представляющим собой текущую дату