2013-02-07 38 views
1

在Ruby腳本中,是否有一種方法可以實際獲取erubis文件中找到的所有預期變量名稱和函數名稱的列表?如何從erubis文件獲取變量名稱列表?

例如,如何從Eruby對象確定包含變量'name'?

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

你嘗試調用'''instance_variables'''或'''methods'''? – phoet

+0

我嘗試過,但沒有注意到任何有用的東西。我更新了原始問題以提供一些示例源代碼。 – sutch

回答

0

我hackish的解決方案:

# 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' 
+0

良好的開端,但它不處理導致無限循環的方法。 – scarver2