EDIT: забыл включить информацию о моей среде... Win7x64, RubyInstaller Ruby v1.9.1-p378
РЕДАКТИРОВАТЬ 2: только что обновленный до версии 1.1.1, патч 429 и все еще получающий эту же ошибку.
Редактировать 3: работает тот же код в Ruby v1.8.7, patch 249, отлично работает. поэтому он v1.9.1, который сломал его, по-видимому.
Я новичок в использовании ERB, и образцы, которые я мог найти, были... ummm... меньше, чем полезно... играя с 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
может кто-то наполнить меня тем, почему он не работает, и помочь мне заставить его работать?