Provides recursive constant lookup methods useful for constant stubbing. @api private
# File lib/rspec/mocks/stub_const.rb, line 30 def const_defined_on?(mod, const_name) mod.const_defined?(const_name) end
# File lib/rspec/mocks/stub_const.rb, line 42 def constants_defined_on(mod) mod.constants.select { |c| const_defined_on?(mod, c) } end
# File lib/rspec/mocks/stub_const.rb, line 34 def get_const_defined_on(mod, const_name) if const_defined_on?(mod, const_name) return mod.const_get(const_name) end raise NameError, "uninitialized constant #{mod.name}::#{const_name}" end
# File lib/rspec/mocks/stub_const.rb, line 63 def recursive_const_defined?(const_name) const_name.split('::').inject([Object, '']) do |(mod, full_name), name| yield(full_name, name) if block_given? && !mod.is_a?(Module) return false unless const_defined_on?(mod, name) [get_const_defined_on(mod, name), [mod, name].join('::')] end end
# File lib/rspec/mocks/stub_const.rb, line 59 def recursive_const_get(const_name) const_name.split('::').inject(Object) { |mod, name| get_const_defined_on(mod, name) } end