В Ruby нельзя динамически объявить локальную переменную.
Но можно определить, например переменную экземпляра класса.
Пример:
str = 'auto'
eval "@#{str}= 'Такое то значение'"
p @auto
Так же можно определить метод с нужным именем, который будет возвращать значение. Например:
str = 'auto'
eval "def #{str}; 'Такое то значение' end"
p auto
НО так делать не нужно. Особенно, если `str` передается извне. Можно легко выстрелить себе в ногу:
str = 'eval'
eval "def #{str}; 'Такое то значение' end"
Хотя, например, в ActiveRecord динамически создаются методы с именами полей таблицы.