[ruby-core:78112] [Ruby trunk Feature#12931] Add support for Binding#instance_eval
From:
samuel@...
Date:
2016-11-14 03:30:38 UTC
List:
ruby-core #78112
Issue #12931 has been reported by Samuel Williams. ---------------------------------------- Feature #12931: Add support for Binding#instance_eval https://bugs.ruby-lang.org/issues/12931 * Author: Samuel Williams * Status: Open * Priority: Normal * Assignee: ---------------------------------------- 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. -- https://bugs.ruby-lang.org/ Unsubscribe: <mailto:ruby-core-request@ruby-lang.org?subject=unsubscribe> <http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>