class Elasticsearch::Model::Extensions::Callback

Public Class Methods

new(config) click to toggle source

@param [Configuration] config

# File lib/elasticsearch/model/extensions/callback.rb, line 8
def initialize(config)
  @config = config
end

Public Instance Methods

config() click to toggle source
# File lib/elasticsearch/model/extensions/callback.rb, line 12
def config
  @config
end
log(message) click to toggle source
# File lib/elasticsearch/model/extensions/callback.rb, line 39
def log(message)
  if defined?(::Rails.logger.warn)
    ::Rails.logger.warn message
  else
    warn message
  end
end
update_for_records(*records) click to toggle source
# File lib/elasticsearch/model/extensions/callback.rb, line 28
def update_for_records(*records)
  field_to_update = config.field_to_update
  optionally_delayed = config.optionally_delayed
  block = config.block

  records.map(&:reload).map(&optionally_delayed).each do |t|
    log "Indexing #{t.class} id=#{t.id} fields=#{[*field_to_update].join(', ')}"
    block.call(t, [*field_to_update])
  end
end
with_error_logging() { || ... } click to toggle source
# File lib/elasticsearch/model/extensions/callback.rb, line 16
def with_error_logging
  begin
    yield
  rescue => e
    log "An error occured while calling Elasticsearch::Model::Extensions::#{self.class.name}#after_commit"
    log e.message
    log e.backtrace.join("\n")
  end

  true
end