elastics-client 1.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. data/LICENSE +20 -0
  2. data/README.md +28 -0
  3. data/VERSION +1 -0
  4. data/elastics-client.gemspec +33 -0
  5. data/lib/elastics.rb +108 -0
  6. data/lib/elastics/api_stubs.rb +1268 -0
  7. data/lib/elastics/api_templates/cluster_api.yml +94 -0
  8. data/lib/elastics/api_templates/core_api.yml +202 -0
  9. data/lib/elastics/api_templates/indices_api.yml +304 -0
  10. data/lib/elastics/class_proxy/base.rb +29 -0
  11. data/lib/elastics/class_proxy/templates.rb +97 -0
  12. data/lib/elastics/class_proxy/templates/doc.rb +91 -0
  13. data/lib/elastics/class_proxy/templates/search.rb +72 -0
  14. data/lib/elastics/configuration.rb +25 -0
  15. data/lib/elastics/deprecation.rb +153 -0
  16. data/lib/elastics/errors.rb +43 -0
  17. data/lib/elastics/http_clients/base.rb +15 -0
  18. data/lib/elastics/http_clients/loader.rb +51 -0
  19. data/lib/elastics/http_clients/patron.rb +29 -0
  20. data/lib/elastics/http_clients/rest_client.rb +36 -0
  21. data/lib/elastics/logger.rb +37 -0
  22. data/lib/elastics/prog_bar.rb +39 -0
  23. data/lib/elastics/rails.rb +1 -0
  24. data/lib/elastics/result.rb +24 -0
  25. data/lib/elastics/result/bulk.rb +20 -0
  26. data/lib/elastics/result/document.rb +67 -0
  27. data/lib/elastics/result/multi_get.rb +24 -0
  28. data/lib/elastics/result/search.rb +28 -0
  29. data/lib/elastics/struct/array.rb +25 -0
  30. data/lib/elastics/struct/hash.rb +105 -0
  31. data/lib/elastics/struct/paginable.rb +58 -0
  32. data/lib/elastics/struct/prunable.rb +60 -0
  33. data/lib/elastics/struct/symbolize.rb +27 -0
  34. data/lib/elastics/tasks.rb +62 -0
  35. data/lib/elastics/template.rb +124 -0
  36. data/lib/elastics/template/common.rb +42 -0
  37. data/lib/elastics/template/logger.rb +66 -0
  38. data/lib/elastics/template/partial.rb +28 -0
  39. data/lib/elastics/template/search.rb +30 -0
  40. data/lib/elastics/template/slim_search.rb +13 -0
  41. data/lib/elastics/template/tags.rb +56 -0
  42. data/lib/elastics/templates.rb +20 -0
  43. data/lib/elastics/utility_methods.rb +131 -0
  44. data/lib/elastics/utils.rb +103 -0
  45. data/lib/elastics/variables.rb +62 -0
  46. data/lib/tasks.rake +28 -0
  47. metadata +148 -0
@@ -0,0 +1,62 @@
1
+ module Elastics
2
+ class Variables < Struct::Hash
3
+
4
+ def initialize(*hashes)
5
+ deep_merge! super(), *hashes
6
+ end
7
+
8
+ def finalize
9
+ self[:index] = self[:index].uniq.join(',') if self[:index].is_a?(Array)
10
+ self[:type] = self[:type].uniq.join(',') if self[:type].is_a?(Array)
11
+ # so you can pass :fields => [:field_one, :field_two]
12
+ self[:params!].each{|k,v| self[:params][k] = v.uniq.join(',') if v.is_a?(Array)}
13
+ if self[:page]
14
+ self[:page] = self[:page].to_i
15
+ self[:page] = 1 unless self[:page] > 0
16
+ self[:params][:from] ||= ((self[:page] - 1) * (self[:params][:size] || 10)).ceil unless self[:page] == 1
17
+ else
18
+ self[:page] = 1
19
+ end
20
+ self
21
+ end
22
+
23
+ # returns Prunable::Value if the value is in VALUES (called from stringified)
24
+ def get_prunable(key)
25
+ val = fetch_nested(key)
26
+ return val if self[:no_pruning].include?(key)
27
+ Prunable::VALUES.include?(val) ? Prunable::Value : val
28
+ end
29
+
30
+ # allows to store keys like 'a.3.c' into vars[:a][3][:c]
31
+ def store_nested(key, value)
32
+ var = unnest(key).reverse.inject(value) do |memo,k|
33
+ if k.is_a?(Symbol)
34
+ {k => memo}
35
+ else
36
+ ar = []
37
+ ar[k] = memo
38
+ ar
39
+ end
40
+ end
41
+ deep_merge! var
42
+ end
43
+
44
+ # allows to fetch values for tag names like 'a.3.c' fetching vars[:a][3][:c]
45
+ def fetch_nested(key)
46
+ unnest(key).inject(self, :fetch)
47
+ rescue NoMethodError, KeyError
48
+ raise MissingVariableError, "the required #{key.inspect} variable is missing."
49
+ end
50
+
51
+ private
52
+
53
+ def unnest(key)
54
+ key.to_s.split('.').map{|s| s =~ /^\d+$/ ? s.to_i : s.to_sym}
55
+ end
56
+
57
+ end
58
+ # shorter alias
59
+ Vars = Variables
60
+ end
61
+
62
+
@@ -0,0 +1,28 @@
1
+ require 'elastics'
2
+
3
+ env = defined?(Rails) ? :environment : []
4
+
5
+ namespace :'elastics-client' do
6
+
7
+ # deprecated tasks
8
+ task(:create_indices => env) do
9
+ Elastics::Deprecation.warn 'flex:create_indices', 'elastics:index:create', nil
10
+ Elastics::Tasks.new.create_indices
11
+ end
12
+ task(:delete_indices => env) do
13
+ Elastics::Deprecation.warn 'flex:delete_indices', 'elastics:index:delete', nil
14
+ Elastics::Tasks.new.delete_indices
15
+ end
16
+
17
+ namespace :index do
18
+
19
+ desc 'creates index/indices from the Elastics::Configuration.config_file file'
20
+ task(:create => env) { Elastics::Tasks.new.create_indices }
21
+
22
+ desc 'destroys index/indices in the Elastics::Configuration.config_file file'
23
+ task(:delete => env) { Elastics::Tasks.new.delete_indices }
24
+
25
+ end
26
+
27
+
28
+ end
metadata ADDED
@@ -0,0 +1,148 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: elastics-client
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.4
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Domizio Demichelis
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-08-19 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: multi_json
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: 1.3.4
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: 1.3.4
30
+ - !ruby/object:Gem::Dependency
31
+ name: progressbar
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: 0.11.0
38
+ - - ~>
39
+ - !ruby/object:Gem::Version
40
+ version: 0.12.0
41
+ type: :runtime
42
+ prerelease: false
43
+ version_requirements: !ruby/object:Gem::Requirement
44
+ none: false
45
+ requirements:
46
+ - - ! '>='
47
+ - !ruby/object:Gem::Version
48
+ version: 0.11.0
49
+ - - ~>
50
+ - !ruby/object:Gem::Version
51
+ version: 0.12.0
52
+ - !ruby/object:Gem::Dependency
53
+ name: dye
54
+ requirement: !ruby/object:Gem::Requirement
55
+ none: false
56
+ requirements:
57
+ - - ~>
58
+ - !ruby/object:Gem::Version
59
+ version: 0.1.4
60
+ type: :runtime
61
+ prerelease: false
62
+ version_requirements: !ruby/object:Gem::Requirement
63
+ none: false
64
+ requirements:
65
+ - - ~>
66
+ - !ruby/object:Gem::Version
67
+ version: 0.1.4
68
+ description: Core gem used by all the elastics gems.
69
+ email: dd.nexus@gmail.com
70
+ executables: []
71
+ extensions: []
72
+ extra_rdoc_files: []
73
+ files:
74
+ - LICENSE
75
+ - README.md
76
+ - VERSION
77
+ - elastics-client.gemspec
78
+ - lib/elastics.rb
79
+ - lib/elastics/api_stubs.rb
80
+ - lib/elastics/api_templates/cluster_api.yml
81
+ - lib/elastics/api_templates/core_api.yml
82
+ - lib/elastics/api_templates/indices_api.yml
83
+ - lib/elastics/class_proxy/base.rb
84
+ - lib/elastics/class_proxy/templates.rb
85
+ - lib/elastics/class_proxy/templates/doc.rb
86
+ - lib/elastics/class_proxy/templates/search.rb
87
+ - lib/elastics/configuration.rb
88
+ - lib/elastics/deprecation.rb
89
+ - lib/elastics/errors.rb
90
+ - lib/elastics/http_clients/base.rb
91
+ - lib/elastics/http_clients/loader.rb
92
+ - lib/elastics/http_clients/patron.rb
93
+ - lib/elastics/http_clients/rest_client.rb
94
+ - lib/elastics/logger.rb
95
+ - lib/elastics/prog_bar.rb
96
+ - lib/elastics/rails.rb
97
+ - lib/elastics/result.rb
98
+ - lib/elastics/result/bulk.rb
99
+ - lib/elastics/result/document.rb
100
+ - lib/elastics/result/multi_get.rb
101
+ - lib/elastics/result/search.rb
102
+ - lib/elastics/struct/array.rb
103
+ - lib/elastics/struct/hash.rb
104
+ - lib/elastics/struct/paginable.rb
105
+ - lib/elastics/struct/prunable.rb
106
+ - lib/elastics/struct/symbolize.rb
107
+ - lib/elastics/tasks.rb
108
+ - lib/elastics/template.rb
109
+ - lib/elastics/template/common.rb
110
+ - lib/elastics/template/logger.rb
111
+ - lib/elastics/template/partial.rb
112
+ - lib/elastics/template/search.rb
113
+ - lib/elastics/template/slim_search.rb
114
+ - lib/elastics/template/tags.rb
115
+ - lib/elastics/templates.rb
116
+ - lib/elastics/utility_methods.rb
117
+ - lib/elastics/utils.rb
118
+ - lib/elastics/variables.rb
119
+ - lib/tasks.rake
120
+ homepage: http://elastics.github.io/elastics
121
+ licenses:
122
+ - MIT
123
+ post_install_message: ! "________________________________________________________________________________\n\n
124
+ \ ELASTICS INSTALLATION NOTES\n________________________________________________________________________________\n\nNew
125
+ Documentation: http://elastics.github.io/elastics\n\nUpgrading Tutorial: http://elastics.github.io/elastics/doc/7-Tutorials/2-Migrate-from-0.x.html\n\n________________________________________________________________________________\n"
126
+ rdoc_options:
127
+ - --charset=UTF-8
128
+ require_paths:
129
+ - lib
130
+ required_ruby_version: !ruby/object:Gem::Requirement
131
+ none: false
132
+ requirements:
133
+ - - ! '>='
134
+ - !ruby/object:Gem::Version
135
+ version: '0'
136
+ required_rubygems_version: !ruby/object:Gem::Requirement
137
+ none: false
138
+ requirements:
139
+ - - ! '>='
140
+ - !ruby/object:Gem::Version
141
+ version: 1.3.6
142
+ requirements: []
143
+ rubyforge_project:
144
+ rubygems_version: 1.8.25
145
+ signing_key:
146
+ specification_version: 3
147
+ summary: Client gem for elasticsearch
148
+ test_files: []