class ThinkingSphinx::IndexSet

Attributes

configuration[R]
options[R]

Public Class Methods

new(options = {}, configuration = nil) click to toggle source
# File lib/thinking_sphinx/index_set.rb, line 13
def initialize(options = {}, configuration = nil)
  @options       = options
  @index_names   = options[:indices] || []
  @configuration = configuration || ThinkingSphinx::Configuration.instance
end
reference_name(klass) click to toggle source
# File lib/thinking_sphinx/index_set.rb, line 6
def self.reference_name(klass)
  @cached_results ||= {}
  @cached_results[klass.name] ||= klass.name.underscore.to_sym
end

Public Instance Methods

ancestors() click to toggle source
# File lib/thinking_sphinx/index_set.rb, line 19
def ancestors
  classes_and_ancestors - classes
end
to_a() click to toggle source
# File lib/thinking_sphinx/index_set.rb, line 23
def to_a
  indices
end

Private Instance Methods

all_indices() click to toggle source
# File lib/thinking_sphinx/index_set.rb, line 31
def all_indices
  configuration.preload_indices
  configuration.indices
end
classes() click to toggle source
# File lib/thinking_sphinx/index_set.rb, line 36
def classes
  options[:classes] || []
end
classes_and_ancestors() click to toggle source
# File lib/thinking_sphinx/index_set.rb, line 44
def classes_and_ancestors
  @classes_and_ancestors ||= mti_classes + sti_classes.collect { |model|
    model.ancestors.take_while { |klass|
      klass != ActiveRecord::Base
    }.select { |klass|
      klass.class == Class
    }
  }.flatten
end
classes_specified?() click to toggle source
# File lib/thinking_sphinx/index_set.rb, line 40
def classes_specified?
  classes.any? || references_specified?
end
index_names() click to toggle source
# File lib/thinking_sphinx/index_set.rb, line 54
def index_names
  options[:indices] || []
end
indices() click to toggle source
# File lib/thinking_sphinx/index_set.rb, line 58
def indices
  return all_indices.select { |index|
    index_names.include?(index.name)
  } if index_names.any?

  everything = classes_specified? ? indices_for_references : all_indices
  everything.reject &:distributed?
end
indices_for_references() click to toggle source
# File lib/thinking_sphinx/index_set.rb, line 67
def indices_for_references
  all_indices.select { |index| references.include? index.reference }
end
mti_classes() click to toggle source
# File lib/thinking_sphinx/index_set.rb, line 71
def mti_classes
  classes.reject { |klass|
    klass.column_names.include?(klass.inheritance_column)
  }
end
references() click to toggle source
# File lib/thinking_sphinx/index_set.rb, line 77
def references
  options[:references] || classes_and_ancestors.collect { |klass|
    ThinkingSphinx::IndexSet.reference_name(klass)
  }
end
references_specified?() click to toggle source
# File lib/thinking_sphinx/index_set.rb, line 83
def references_specified?
  options[:references] && options[:references].any?
end
sti_classes() click to toggle source
# File lib/thinking_sphinx/index_set.rb, line 87
def sti_classes
  classes.select { |klass|
    klass.column_names.include?(klass.inheritance_column)
  }
end