Sha256: f1c5c14375136850117267d00f391a36b5b37abfad1e6496f71aeb62354b7be7

Contents?: true

Size: 1.04 KB

Versions: 1

Compression:

Stored size: 1.04 KB

Contents

class ThinkingSphinx::IndexSet
  include Enumerable

  delegate :each, :empty?, :to => :indices

  def initialize(classes, index_names, configuration = nil)
    @classes       = classes || []
    @index_names   = index_names
    @configuration = configuration || ThinkingSphinx::Configuration.instance
  end

  def ancestors
    classes_and_ancestors - classes
  end

  def to_a
    indices
  end

  private

  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

  def indices
    @configuration.preload_indices

    return @configuration.indices.select { |index|
      @index_names.include?(index.name)
    } if @index_names && @index_names.any?

    return @configuration.indices if @classes.empty?

    @configuration.indices_for_references(*references)
  end

  def references
    classes_and_ancestors.collect { |klass|
      klass.name.underscore.to_sym
    }
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
thinking-sphinx-3.0.6 lib/thinking_sphinx/index_set.rb