From: nobu@... Date: 2017-01-19T07:22:05+00:00 Subject: [ruby-core:79144] [Ruby trunk Feature#12931][Rejected] Add support for Binding#instance_eval Issue #12931 has been updated by Nobuyoshi Nakada. Status changed from Open to Rejected ---------------------------------------- Feature #12931: Add support for Binding#instance_eval https://bugs.ruby-lang.org/issues/12931#change-62559 * Author: Samuel Williams * Status: Rejected * Priority: Normal * Assignee: * Target version: ---------------------------------------- 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 ```ruby 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: