Problem mit OpenStruct mit ERB

BEARBEITEN vergaß, meine Umgebungsinformationen einzuschließen ... Win7x64, RubyInstaller Ruby v1.9.1-p378

EDIT 2: wurde gerade auf v1.9.1, Patch 429, aktualisiert und es wird immer noch der gleiche Fehler angezeigt.

Edit 3: Ausführen des gleichen Codes in Ruby v1.8.7, Patch 249, funktioniert einwandfrei. also ist es v1.9.1, die es anscheinend kaputt gemacht hat.

Ich bin neu in der Verwendung von ERB und die Beispiele, die ich finden konnte, sind ... ähm ... weniger als hilfreich ... nachdem ich ungefähr eine Stunde mit ERB herumgespielt habe, habe ich einige grundlegende Beispiele (endlich) zum Arbeiten gebracht, aber ich hab keine ahnung warum das nicht geht ...

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)

dieser Code erzeugt den folgenden Fehler:

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

warum schaut es auf diemain:Objectbindung? Ich sagte ihm, er solle die Bindung von OpenStruct verwenden, indem ich @ übergebvars_binding

kann mir jemand mitteilen, warum es nicht funktioniert, und mir helfen, es zum Laufen zu bringen?

Antworten auf die Frage(8)

Ihre Antwort auf die Frage