Нет, это невозможно, как вы показали.синтаксис #{}
предназначен только для интерполяции строк, поэтому, когда вы пишете PP = "[#{fname}]"
, он просто сохраняет строку [Empty]
в переменной PP
.Строки не помнят, какой код использовался для их создания.
Неясно, чего вы пытаетесь достичь с этим, но более чем вероятно, что метод будет более подходящим, чем интерполяция строк.*
Обновление после вашего редактирования: Похоже, вы хотите создать своего рода трассировку имитируемого стека.Строковая интерполяция все еще не имеет смысла.Вместо этого вы можете сделать что-то вроде этого:
def debug(message)
puts "#{ caller[0][/`([^']*)'/, 1]}: #{message}"
end
def something
debug "an important message"
end
def another
debug "result message to output"
end
something
another
Исходя из вашего странного использования глобальных переменных и констант, кажется, что вы пытаетесь применить идеи из какого-то другого языка способами, которые не соответствуютРубин.Я бы порекомендовал просмотреть книгу по Ruby, чтобы ознакомиться с основами.