# File lib/thinking_sphinx/index.rb, line 4 def self.define(reference, options = {}, &block) new(reference, options, &block).indices.each do |index| ThinkingSphinx::Configuration.instance.indices << index end end
# File lib/thinking_sphinx/index.rb, line 10 def initialize(reference, options, &block) defaults = ThinkingSphinx::Configuration.instance. settings['index_options'] || {} defaults.symbolize_keys! @reference, @options, @block = reference, defaults.merge(options), block end
# File lib/thinking_sphinx/index.rb, line 18 def indices if options[:delta] delta_indices else [single_index] end end
# File lib/thinking_sphinx/index.rb, line 45 def delta_indices [false, true].collect do |delta| index_class.new( reference, options.merge(:delta? => delta, :delta_processor => processor) ).tap do |index| index.definition_block = block end end end
# File lib/thinking_sphinx/index.rb, line 28 def index_class case options[:with] when :active_record ThinkingSphinx::ActiveRecord::Index when :real_time ThinkingSphinx::RealTime::Index else raise "Unknown index type: #{options[:with]}" end end
# File lib/thinking_sphinx/index.rb, line 56 def processor @processor ||= ThinkingSphinx::Deltas.processor_for options.delete(:delta) end
# File lib/thinking_sphinx/index.rb, line 39 def single_index index_class.new(reference, options).tap do |index| index.definition_block = block end end