Как получить список имен переменных из файла erubis?

Из сценария Ruby существует ли способ прагматически получить список всех ожидаемых имен переменных и функций, найденных в файле erubis?

Например, как определить из объекта Eruby, что он содержит переменную name?

require 'erubis'
source = 'Hello, <%= name %>'
erb = Erubis::Eruby.new(source)

1 ответ

Решение

Мое хакерское решение:

# from the original question
require 'erubis'
source = 'Hello, <%= name %>'
erb = Erubis::Eruby.new(source)

# a not so great solution
vars = {}
begin
  Erubis::Eruby.new(code).result(vars)
rescue NameError => e
  puts "Found: '#{e.name}'"
  vars[e.name.to_sym] = nil
  retry
end

Что приводит к:

Found: 'name'
Другие вопросы по тегам