Если вы можете простить знак @ перед именем переменной, будет работать следующее:
variable_name = ... # determine user-given variable name
instance_variable_set("@#{variable_name}", :something)
Это создаст переменную с именем @whatever
, значение которой будет установлено на :something
. :something
, очевидно, может быть чем угодно. Кажется, это работает в глобальном масштабе, объявляя спонтанный экземпляр Object
, который связывает все (я не могу найти ссылку на это).
Метод instance_variable_get
позволит вам получить значение по имени аналогичным образом.
instance_variable_get("@#{variable_name}")