Проблема с использованием OpenStruct с ERB

РЕДАКТИРОВАТЬ: забыл включить информацию о моей среде ... Win7x64, RubyInstaller Ruby v1.9.1-p378

РЕДАКТИРОВАТЬ 2: только что обновил до v1.9.1, патч 429, и все еще получаю эту же ошибку.

Изменить 3: запуск этого же кода в Ruby v1.8.7, патч 249, работает нормально. так что это v1.9.1, который сломал это, по-видимому.

Я новичок в использовании ERB, и примеры, которые я смог найти ... ммм ... менее чем полезны ... поиграв с ERB около часа, я получил несколько базовых примеров работы (наконец), но у меня есть понятия не имею, почему это не работает ...

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)

этот код выдает следующую ошибку:

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 `'

почему он смотрит наmain:Object связывание? Я сказал ему использовать привязку из OpenStruct, передавvars_binding

может кто-нибудь объяснить мне, почему это не работает, и помочь мне заставить его работать?

Ответы на вопрос(1)

Ваш ответ на вопрос