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 11
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 4
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 17
def ancestors
  classes_and_ancestors - classes
end
to_a() click to toggle source
# File lib/thinking_sphinx/index_set.rb, line 21
def to_a
  indices
end

Private Instance Methods

all_indices() click to toggle source
# File lib/thinking_sphinx/index_set.rb, line 29
def all_indices
  configuration.preload_indices
  configuration.indices
end
classes() click to toggle source
# File lib/thinking_sphinx/index_set.rb, line 34
def classes
  options[:classes] || []
end
classes_and_ancestors() click to toggle source
# File lib/thinking_sphinx/index_set.rb, line 42
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 38
def classes_specified?
  classes.any? || references_specified?
end
index_names() click to toggle source
# File lib/thinking_sphinx/index_set.rb, line 52
def index_names
  options[:indices] || []
end
indices() click to toggle source
# File lib/thinking_sphinx/index_set.rb, line 56
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 65
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 69
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 75
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 81
def references_specified?
  options[:references] && options[:references].any?
end
sti_classes() click to toggle source
# File lib/thinking_sphinx/index_set.rb, line 85
def sti_classes
  classes.select { |klass|
    klass.column_names.include?(klass.inheritance_column)
  }
end