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 6
def initialize(options = {}, configuration = nil)
  @options       = options
  @index_names   = options[:indices] || []
  @configuration = configuration || ThinkingSphinx::Configuration.instance
end

Public Instance Methods

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

Private Instance Methods

all_indices() click to toggle source
# File lib/thinking_sphinx/index_set.rb, line 24
def all_indices
  configuration.preload_indices
  configuration.indices
end
classes() click to toggle source
# File lib/thinking_sphinx/index_set.rb, line 29
def classes
  options[:classes] || []
end
classes_and_ancestors() click to toggle source
# File lib/thinking_sphinx/index_set.rb, line 37
def classes_and_ancestors
  @classes_and_ancestors ||= 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 33
def classes_specified?
  classes.any? || references_specified?
end
index_names() click to toggle source
# File lib/thinking_sphinx/index_set.rb, line 47
def index_names
  options[:indices] || []
end
indices() click to toggle source
# File lib/thinking_sphinx/index_set.rb, line 51
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 60
def indices_for_references
  all_indices.select { |index| references.include? index.reference }
end
references() click to toggle source
# File lib/thinking_sphinx/index_set.rb, line 64
def references
  options[:references] || classes_and_ancestors.collect { |klass|
    klass.name.underscore.to_sym
  }
end
references_specified?() click to toggle source
# File lib/thinking_sphinx/index_set.rb, line 70
def references_specified?
  options[:references] && options[:references].any?
end