Sha256: 2af49759ffde0b247970ddb467f4c554101640823cd79e43501c3547d60b42e3

Contents?: true

Size: 1.36 KB

Versions: 3

Compression:

Stored size: 1.36 KB

Contents

# Core ext methods

class Object < BasicObject
  def stub_ivar(name, value = nil)
    instance_variable_set(name, value)
    yield
  ensure
    remove_instance_variable(name)
  end

  def stub_cvar(name, value = nil)
    class_variable_set(name, value)
    yield
  ensure
    remove_class_variable(name)
  end

  def stub_const(name, value)
    if const_defined?(name)
      old_value = const_get(name)
      remove_const(name)
    end

    const_set(name, value)
    yield
  ensure
    remove_const(name)
    const_set(name, old_value) if defined? old_value
  end

  def stub_imethod(name, block)
    alias_method(:"_old_#{name}", name) if (reset_old = method_defined?(name))
    define_method(name, &block)
    yield
  ensure
    undef_method(name)

    if reset_old
      alias_method(name, :"_old_#{name}")
      undef_method(:"_old_#{name}")
    end
  end

  def get_reset_ivar(name, *extra, &block)
    instance_variable_set(name, extra.first) if extra.any?
    instance_exec(&block)

    return unless instance_variable_defined?(name)

    instance_variable_get(name).tap do
      remove_instance_variable(name)
    end
  end

  def get_reset_cvar(name, *extra, &block)
    class_variable_set(name, extra.first) if extra.any?
    instance_exec(&block)

    return unless class_variable_defined?(name)

    class_variable_get(name).tap do
      remove_class_variable(name)
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
rails-graphql-1.0.0.rc2 test/test_ext.rb
rails-graphql-1.0.0.rc1 test/test_ext.rb
rails-graphql-1.0.0.beta test/test_ext.rb