Вы можете реализовать это примерно так, но это не очень красиво.И, как указал Гнибблер, проще использовать интерполяцию.Единственное преимущество, которое я вижу в том, чтобы делать что-то подобное, - это если строка формата форматирует одни и те же значения несколько раз.И даже тогда, вероятно, было бы проще использовать пользовательский хеш (вместо выгрузки VAR в форматтер) или абстрагировать его в метод.
#!/usr/bin/env ruby
module Kernel
def vars(b)
Hash[
(b.eval('local_variables')-[:_]).
map{|v| [v,b.eval(v.to_s)]}
]
end
end
a = 10
puts vars(binding)