class ConstantReplacer

Public Class Methods

replace(klass_constants, &block) click to toggle source
# File lib/rspec/isolate/constant_replacer.rb, line 3
def replace(klass_constants, &block)
  klass_constants.each do |klass|
    get_module(klass).send(:remove_const, get_class_name(klass))
    get_module(klass).const_set(get_class_name(klass), block.call(klass))
  end
end

Private Class Methods

get_class_name(klass_constant) click to toggle source
# File lib/rspec/isolate/constant_replacer.rb, line 20
def get_class_name(klass_constant)
  get_constant_components(klass_constant).last
end
get_constant_components(klass_constant) click to toggle source
# File lib/rspec/isolate/constant_replacer.rb, line 24
def get_constant_components(klass_constant)
  klass_constant.name.split("::")
end
get_module(klass_constant) click to toggle source
# File lib/rspec/isolate/constant_replacer.rb, line 12
def get_module(klass_constant)
  get_module_names(klass_constant).reduce(Object, :const_get)
end
get_module_names(klass_constant) click to toggle source
# File lib/rspec/isolate/constant_replacer.rb, line 16
def get_module_names(klass_constant)
  get_constant_components(klass_constant)[0...-1]
end