Problema ao usar o OpenStruct com ERB
EDITAR: esqueci de incluir minhas informações do ambiente ... Win7x64, RubyInstaller Ruby v1.9.1-p378
EDIT 2: acabou de atualizar para a v1.9.1, patch 429, e ainda está recebendo o mesmo erro.
Edição 3: executar esse mesmo código no Ruby v1.8.7, patch 249, funciona bem. então é a v1.9.1 que quebrou, aparentemente.
Eu sou novo no uso do ERB e as amostras que pude encontrar são ... ummm ... menos que úteis ... tendo brincado com o ERB por cerca de uma hora, tenho alguns exemplos básicos trabalhando (finalmente), mas tenho não faço ideia por que isso não funciona ...
require 'ostruct'
require 'erb'
data = {:bar => "bar"}
vars = OpenStruct.new(data)
template = "foo "
erb = ERB.new(template)
vars_binding = vars.send(:binding)
puts erb.result(vars_binding)
esse código produz o seguinte erro:
irb(main):007:0> puts erb.result(vars_binding) NameError: undefined local variable or method `bar' for main:Object from (erb):1 from C:/Ruby/v1.9.1/lib/ruby/1.9.1/erb.rb:753:in `eval' from C:/Ruby/v1.9.1/lib/ruby/1.9.1/erb.rb:753:in `result' from (irb):7 from C:/Ruby/v1.9.1/bin/irb:12:in `'
por que está olhando para omain:Object
obrigatório? Eu disse para usar a ligação do OpenStruct passandovars_binding
alguém pode me explicar por que não funciona e me ajudar a fazê-lo funcionar?