Method: Chewy.derive_name

Defined in:
lib/chewy.rb

.derive_name(index_name) ⇒ Chewy::Index

Derives an index for the passed string identifier if possible.

Examples:

Chewy.derive_name(UsersIndex) # => UsersIndex
Chewy.derive_name('namespace/users') # => Namespace::UsersIndex
Chewy.derive_name('missing') # => raises Chewy::UndefinedIndex

Parameters:

  • index_name (String, Chewy::Index)

    index identifier or class

Returns:

Raises:



87
88
89
90
91
92
93
94
95
96
# File 'lib/chewy.rb', line 87

def derive_name(index_name)
  return index_name if index_name.is_a?(Class) && index_name < Chewy::Index

  class_name = "#{index_name.camelize.gsub(/Index\z/, '')}Index"
  index = class_name.safe_constantize

  return index if index && index < Chewy::Index

  raise Chewy::UndefinedIndex, "Can not find index named `#{class_name}`"
end