Class: Elasticsearch::Model::Extensions::Callback

Inherits:
Object
  • Object
show all
Defined in:
lib/elasticsearch/model/extensions/callback.rb

Direct Known Subclasses

DestroyCallback, UpdateCallback

Instance Method Summary collapse

Constructor Details

#initialize(config) ⇒ Callback

Returns a new instance of Callback.

Parameters:



8
9
10
# File 'lib/elasticsearch/model/extensions/callback.rb', line 8

def initialize(config)
  @config = config
end

Instance Method Details

#configObject



12
13
14
# File 'lib/elasticsearch/model/extensions/callback.rb', line 12

def config
  @config
end

#log(message) ⇒ Object



39
40
41
42
43
44
45
# 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) ⇒ Object



28
29
30
31
32
33
34
35
36
37
# 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_loggingObject



16
17
18
19
20
21
22
23
24
25
26
# 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