Sha256: 843157732b60d873609c5f16fd77be2a0561707ab447881a223a76d7e746a79d

Contents?: true

Size: 762 Bytes

Versions: 6

Compression:

Stored size: 762 Bytes

Contents

require 'spec/ruby'

if ::Spec::Ruby.version < "1.8.7"
  # based on Bounded Spec InstanceExec (Mauricio Fernandez)
  # http://eigenclass.org/hiki/bounded+space+instance_exec
  class Object
    module InstanceExecHelper; end
    include InstanceExecHelper
    def instance_exec(*args, &block)
      begin
        orig_critical, Thread.critical = Thread.critical, true
        n = 0
        n += 1 while respond_to?(method_name="__instance_exec#{n}")
        InstanceExecHelper.module_eval{ define_method(method_name, &block) }
      ensure
        Thread.critical = orig_critical
      end
      begin
        return send(method_name, *args)
      ensure
        InstanceExecHelper.module_eval{ remove_method(method_name) } rescue nil
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 2 rubygems

Version Path
dchelimsky-rspec-1.1.99.13 lib/spec/matchers/extensions/instance_exec.rb
rspec-1.2.2 lib/spec/matchers/extensions/instance_exec.rb
rspec-1.2.0 lib/spec/matchers/extensions/instance_exec.rb
rspec-1.2.1 lib/spec/matchers/extensions/instance_exec.rb
rspec-1.2.3 lib/spec/matchers/extensions/instance_exec.rb
rspec-1.2.4 lib/spec/matchers/extensions/instance_exec.rb