class ThinkingSphinx::RealTime::Callbacks::RealTimeCallbacks

Attributes

block[R]
path[R]
reference[R]

Public Class Methods

new(reference, path = [], &block) click to toggle source
# File lib/thinking_sphinx/real_time/callbacks/real_time_callbacks.rb, line 2
def initialize(reference, path = [], &block)
  @reference, @path, @block = reference, path, block
end

Public Instance Methods

after_commit(instance) click to toggle source
# File lib/thinking_sphinx/real_time/callbacks/real_time_callbacks.rb, line 6
def after_commit(instance)
  persist_changes instance
end
after_save(instance) click to toggle source
# File lib/thinking_sphinx/real_time/callbacks/real_time_callbacks.rb, line 10
def after_save(instance)
  persist_changes instance
end

Private Instance Methods

callbacks_enabled?() click to toggle source
# File lib/thinking_sphinx/real_time/callbacks/real_time_callbacks.rb, line 18
def callbacks_enabled?
  setting = configuration.settings['real_time_callbacks']
  setting.nil? || setting
end
configuration() click to toggle source
# File lib/thinking_sphinx/real_time/callbacks/real_time_callbacks.rb, line 23
def configuration
  ThinkingSphinx::Configuration.instance
end
indices() click to toggle source
# File lib/thinking_sphinx/real_time/callbacks/real_time_callbacks.rb, line 27
def indices
  configuration.indices_for_references reference
end
objects_for(instance) click to toggle source
# File lib/thinking_sphinx/real_time/callbacks/real_time_callbacks.rb, line 31
def objects_for(instance)
  if block
    results = block.call instance
  else
    results = path.inject(instance) { |object, method| object.send method }
  end

  Array results
end
persist_changes(instance) click to toggle source
# File lib/thinking_sphinx/real_time/callbacks/real_time_callbacks.rb, line 41
def persist_changes(instance)
  return unless real_time_indices? && callbacks_enabled?

  real_time_indices.each do |index|
    objects_for(instance).each do |object|
      ThinkingSphinx::RealTime::Transcriber.new(index).copy object
    end
  end
end
real_time_indices() click to toggle source
# File lib/thinking_sphinx/real_time/callbacks/real_time_callbacks.rb, line 55
def real_time_indices
  indices.select { |index| index.is_a? ThinkingSphinx::RealTime::Index }
end
real_time_indices?() click to toggle source
# File lib/thinking_sphinx/real_time/callbacks/real_time_callbacks.rb, line 51
def real_time_indices?
  real_time_indices.any?
end