Class: Elasticated::BulkRequest

Inherits:
Object
  • Object
show all
Includes:
Mixins::BlockEvaluation, Mixins::Inspectionable
Defined in:
lib/elasticated/bulk_request.rb,
lib/elasticated/bulk_request/response.rb,
lib/elasticated/bulk_request/response_item.rb

Defined Under Namespace

Classes: Response, ResponseItem

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Mixins::BlockEvaluation

#evaluate

Methods included from Mixins::Inspectionable

#inspect, #text_for_inspect

Constructor Details

#initialize(repository) ⇒ BulkRequest

Returns a new instance of BulkRequest.



16
17
18
19
# File 'lib/elasticated/bulk_request.rb', line 16

def initialize(repository)
  self.repository = repository
  self.actions = Array.new
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(method_name, *args, &block) ⇒ Object



39
40
41
42
43
44
45
46
47
# File 'lib/elasticated/bulk_request.rb', line 39

def method_missing(method_name, *args, &block)
  action_class = get_action_class method_name
  if action_class
    action = action_class.new(repository, *args, &block)
    add action
  else
    super
  end
end

Instance Attribute Details

#actionsObject

Returns the value of attribute actions.



13
14
15
# File 'lib/elasticated/bulk_request.rb', line 13

def actions
  @actions
end

#errorsObject

Returns the value of attribute errors.



14
15
16
# File 'lib/elasticated/bulk_request.rb', line 14

def errors
  @errors
end

#itemsObject

Returns the value of attribute items.



14
15
16
# File 'lib/elasticated/bulk_request.rb', line 14

def items
  @items
end

#repositoryObject

Returns the value of attribute repository.



13
14
15
# File 'lib/elasticated/bulk_request.rb', line 13

def repository
  @repository
end

Class Method Details

.build_over(repository, &block) ⇒ Object



4
5
6
7
8
# File 'lib/elasticated/bulk_request.rb', line 4

def self.build_over(repository, &block)
  request = new repository
  request.evaluate block
  request
end

Instance Method Details

#add(action) ⇒ Object



21
22
23
# File 'lib/elasticated/bulk_request.rb', line 21

def add(action)
  actions << action
end

#buildObject



25
26
27
# File 'lib/elasticated/bulk_request.rb', line 25

def build
  actions.map(&:build).flatten
end

#get_action_class(action_name) ⇒ Object



33
34
35
36
37
# File 'lib/elasticated/bulk_request.rb', line 33

def get_action_class(action_name)
  return nil unless action_name.to_s.end_with? '_document'
  camel_case_name = Helpers.string_to_camel_case action_name.to_s.gsub /\_document$/, ''
  self.class.const_get("::Elasticated::BulkActions::#{camel_case_name}Action") rescue nil
end

#parse(result) ⇒ Object



53
54
55
# File 'lib/elasticated/bulk_request.rb', line 53

def parse(result)
  Response.parse result
end

#respond_to_missing?(name, include_private = false) ⇒ Boolean

Returns:

  • (Boolean)


49
50
51
# File 'lib/elasticated/bulk_request.rb', line 49

def respond_to_missing?(name, include_private=false)
  get_action_class(name) || super
end

#to_textObject



29
30
31
# File 'lib/elasticated/bulk_request.rb', line 29

def to_text
  build.map(&:to_json)*"\n"
end