Sha256: fafbd4a4562a8ba53745f6ccf6f877f8c5e5c8f7d690bbcc72a4e01125d36bc1

Contents?: true

Size: 1.46 KB

Versions: 11

Compression:

Stored size: 1.46 KB

Contents

module VCR
  if defined?(::BasicObject)
    BasicObject = ::BasicObject
  else
    # taken directly from backports:
    # https://github.com/marcandre/backports/blob/v1.18.2/lib/backports/basic_object.rb
    class BasicObject
      KEEP = [:instance_eval, :instance_exec, :__send__,
              "instance_eval", "instance_exec", "__send__"]
      # undefine almost all instance methods
      begin
        old_verbose, $VERBOSE = $VERBOSE, nil # silence the warning for undefining __id__
        (instance_methods - KEEP).each do |method|
          undef_method method
        end
      ensure
        $VERBOSE = old_verbose
      end

      class << self
        def === (cmp)
          true
        end

        # Let's try to keep things clean, in case methods have been added to Object
        # either directly or through an included module.
        # We'll do this whenever a class is derived from BasicObject
        # Ideally, we'd do this by trapping Object.method_added
        # and M.method_added for any module M included in Object or a submodule
        # Seems really though to get right, but pull requests welcome ;-)
        def inherited(sub)
          BasicObject.class_eval do
            (instance_methods - KEEP).each do |method|
              if Object.method_defined?(method) && instance_method(method).owner == Object.instance_method(method).owner
                undef_method method
              end
            end
          end
        end
      end
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
vcr-1.11.3 lib/vcr/util/basic_object.rb
vcr-1.11.2 lib/vcr/util/basic_object.rb
vcr-1.11.1 lib/vcr/util/basic_object.rb
vcr-1.10.3 lib/vcr/util/basic_object.rb
vcr-1.10.2 lib/vcr/util/basic_object.rb
vcr-1.10.0 lib/vcr/util/basic_object.rb
vcr-1.9.0 lib/vcr/util/basic_object.rb
vcr-1.8.0 lib/vcr/util/basic_object.rb
vcr-1.7.2 lib/vcr/util/basic_object.rb
vcr-1.7.1 lib/vcr/util/basic_object.rb
vcr-1.7.0 lib/vcr/util/basic_object.rb