Just like in Rails:

require 'erb'

template = ERB.new <<-TEMPLATE
This is a template from <%= @context %> with yield:

<%= yield %>

<%= yield :one, :two, :three %>

Text after yield
TEMPLATE

class Context
def initialize
@context = "context"
end

def get_binding
binding
end

def handle_yield(args)
"Yielding with args: #{args.inspect}"
end
end

ctx = Context.new

template.run(ctx.get_binding{|*args| ctx.handle_yield(args)})