Actions
Feature #12931
closedAdd support for Binding#instance_eval
Status:
Rejected
Assignee:
-
Target version:
-
Description
Many people would probably like to use binding.instance_eval
when executing templates. The reason for this is because binding.eval
is slow.
The use case is template rendering, e.g. systems like ERB.
In my template renderer, I did have
if Binding === scope
# Slow code path, evaluate the code string in the given binding (scope).
scope.eval(code, @buffer.path)
else
# Faster code path, use instance_eval on a compiled Proc.
scope.instance_eval(&to_proc)
end
The binding path is several orders of magnitude slower because the code is a string and must be parsed, compiled, etc. But, to_proc
path can be cached.
In terms of duck typing, it would be nice if binding implemented #instance_eval
and would allow passing a block.
Actions
Like0
Like0Like0Like0Like0