Module: NestedRecord

Defined in:
lib/nested_record.rb,
lib/nested_record/errors.rb,
lib/nested_record/version.rb,
lib/nested_record/lookup_const.rb

Defined Under Namespace

Modules: Concern, Macro Classes: Base, Collection, CollectionProxy, ConfigurationError, Error, InvalidTypeError, MacroRecorder, Methods, NestedAccessorsSetup, PrimaryKeyCheck, PrimaryKeyError, Setup, Type, TypeMismatchError

Constant Summary collapse

VERSION =
'1.0.0'

Class Method Summary collapse

Class Method Details

.lookup_const(owner, type_name) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/nested_record/lookup_const.rb', line 6

def self.lookup_const(owner, type_name)
  if type_name.start_with?('::')
    ActiveSupport::Dependencies.constantize(type_name)
  else
    candidates = []
    owner.name.scan(/::|$/) { candidates.unshift "#{$`}::#{type_name}" }
    candidates << type_name

    candidates.each do |candidate|
      constant = ActiveSupport::Dependencies.safe_constantize(candidate)
      return constant if candidate == constant.to_s
    end

    raise NameError.new("uninitialized constant #{candidates.first}", candidates.first)
  end
end