Для полноты вот способ, которым вы должны не сделать это. Это ужасная идея, и она сломается всеми способами:
Согласно Крису Ши , раздел 8.6 в В языке программирования Ruby Фланагана и Матца есть этот фрагмент (комментарии добавлены для ясности):
class Object
def get_name #do not use this brittle technique
line_number = caller[0].split(':')[1].to_i
line_executed = File.readlines(__FILE__)[line_number-1]
line_executed.match(/(\S+)\.get_name/)[1] #BAD IDEA: parsing Ruby with regular expressions
end
end
Он «работает», находя номер строки, с которой был вызван get_name
, читает эту строку из текущего запущенного файла и пытается использовать регулярное выражение для анализа имени переменной , С извинениями Zalgo , не попытайтесь проанализировать Ruby с помощью регулярных выражений!