mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Since we require 1.8.7 we don't need to shim instance_exec anymore
This commit is contained in:
parent
e1b5e3cc70
commit
103b29831e
1 changed files with 0 additions and 27 deletions
|
@ -50,31 +50,4 @@ class Object
|
|||
def extend_with_included_modules_from(object) #:nodoc:
|
||||
object.extended_by.each { |mod| extend mod }
|
||||
end
|
||||
|
||||
unless defined? instance_exec # 1.9
|
||||
module InstanceExecMethods #:nodoc:
|
||||
end
|
||||
include InstanceExecMethods
|
||||
|
||||
# Evaluate the block with the given arguments within the context of
|
||||
# this object, so self is set to the method receiver.
|
||||
#
|
||||
# From Mauricio's http://eigenclass.org/hiki/bounded+space+instance_exec
|
||||
def instance_exec(*args, &block)
|
||||
begin
|
||||
old_critical, Thread.critical = Thread.critical, true
|
||||
n = 0
|
||||
n += 1 while respond_to?(method_name = "__instance_exec#{n}")
|
||||
InstanceExecMethods.module_eval { define_method(method_name, &block) }
|
||||
ensure
|
||||
Thread.critical = old_critical
|
||||
end
|
||||
|
||||
begin
|
||||
send(method_name, *args)
|
||||
ensure
|
||||
InstanceExecMethods.module_eval { remove_method(method_name) } rescue nil
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue