Если вы абсолютно обязаны , вы можете использовать глобальные переменные, и они объявлены с префиксом $
. Они крайне обескуражены, потому что существует только одно глобальное пространство имен, которое делает возможным столкновения. Обычно они используются для настройки интерпретатора, например $LOAD_PATH
.
Лучше использовать модуль с переменными экземпляра:
module MyContainer
def self.settings
@settings ||= { }
end
end
MyContainer.settings[:foo] = :bar
Это имеет преимущество в том, что ваши переменные содержатся в пространстве имен, но не мешают другим подпрограммам получать к ним доступ.
Имейте в виду, что это будет работать только в контексте того же процесса Ruby или дочерних процессов, созданных с помощью fork
, поэтому использование system
или exec
не будет работать. Помните также, что разветвленные процессы должны использовать IPC для связи со своим родителем.