End of Life Ruby 3.2 has reached end of life and gets no more fixes. Switch to Ruby 4.0 →
instance method
ERB#def_method
def_method(mod, methodname, fname='(ERB)')
lib/erb.rb
View on GitHub ↗
# File tmp/rubies/ruby-3.2.0/lib/erb.rb, line 464
def def_method(mod, methodname, fname='(ERB)')
src = self.src.sub(/^(?!#|$)/) {"def #{methodname}\n"} << "\nend\n"
mod.module_eval do
eval(src, binding, fname, -1)
end
end
Define methodname as instance method of mod from compiled Ruby source.
example:
Example
filename = 'example.rhtml' # 'arg1' and 'arg2' are used in example.rhtml erb = ERB.new(File.read(filename)) erb.def_method(MyClass, 'render(arg1, arg2)', filename) print MyClass.new.render('foo', 123)