gummi 1.0.2 → 1.0.3
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.
- checksums.yaml +7 -0
- data/.ruby-version +1 -1
- data/lib/gummi/configuration.rb +11 -22
- data/lib/gummi/db_layer/document/search/searching.rb +1 -1
- data/lib/gummi/db_layer/document.rb +29 -23
- data/lib/gummi/db_layer/index.rb +1 -1
- data/lib/gummi/repository_layer/repository.rb +2 -2
- data/lib/gummi/version.rb +1 -1
- data/lib/gummi.rb +17 -1
- data/spec/lib/gummi/db_layer/document_spec.rb +5 -5
- metadata +32 -58
- data/lib/gummi/api.rb +0 -9
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: f3d41b1cee339b337559814eef1a6dbb0c1192f0
|
4
|
+
data.tar.gz: d2c5193d3fe4ee93d474ea0fd01d984a5b90bd4f
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 390812c6190cdb4f41f52b094fafdabcd051013979803dd5380bd98679426d499e3bba2a91e2307a5ebb1c08ee5dadd6a8bf50b04d37bacb2c29a2999a649813
|
7
|
+
data.tar.gz: 1f3e154cb11f49ac05d62d6f37cdc4fa378b275616600f39f62c78d5e1ea1d90bb701f99aaf91e4113723d4e7d26ab8b3bd0fa691c166ad14b3751706458f8ee
|
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.
|
1
|
+
2.1.1
|
data/lib/gummi/configuration.rb
CHANGED
@@ -3,36 +3,25 @@ require 'logger'
|
|
3
3
|
module Gummi
|
4
4
|
class Configuration
|
5
5
|
|
6
|
-
|
6
|
+
include Virtus.model
|
7
7
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
8
|
+
attribute :hosts, Array[String], default: :default_hosts
|
9
|
+
attribute :logger, Object, default: :default_logger
|
10
|
+
attribute :reload_connections, Boolean, default: false
|
11
|
+
attribute :retry_on_failure, Boolean, default: false
|
12
|
+
attribute :reload_on_failure, Boolean, default: false
|
13
|
+
attribute :randomize_hosts, Boolean, default: false
|
13
14
|
|
14
15
|
def default_logger
|
15
16
|
if defined?(Rails)
|
16
17
|
Rails.logger
|
17
18
|
else
|
18
|
-
Logger.new(
|
19
|
+
Logger.new(STDERR)
|
19
20
|
end
|
20
21
|
end
|
21
|
-
end
|
22
|
-
|
23
|
-
def self.config
|
24
|
-
@config ||= Configuration.new
|
25
|
-
end
|
26
|
-
|
27
|
-
# Public: Yields the configuration instance.
|
28
|
-
#
|
29
|
-
def self.configure(&block)
|
30
|
-
yield config
|
31
|
-
end
|
32
22
|
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
@config = nil
|
23
|
+
def default_hosts
|
24
|
+
ENV.fetch('GUMMI_HOSTS', 'localhost:9200').split(',')
|
25
|
+
end
|
37
26
|
end
|
38
27
|
end
|
@@ -29,7 +29,7 @@ module Gummi
|
|
29
29
|
#
|
30
30
|
# Returns true or false
|
31
31
|
def exists?(id)
|
32
|
-
client.exists
|
32
|
+
client.exists with_options(id: id)
|
33
33
|
end
|
34
34
|
|
35
35
|
def create(*args)
|
@@ -37,13 +37,21 @@ module Gummi
|
|
37
37
|
instance.create ? instance : nil
|
38
38
|
end
|
39
39
|
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
40
|
+
# Public: Get document using the (realtime) get api
|
41
|
+
#
|
42
|
+
# id - The document id
|
43
|
+
#
|
44
|
+
# parent_id - The parent id (required if getting a child document)
|
45
|
+
#
|
46
|
+
# Examples
|
47
|
+
#
|
48
|
+
# DB::Rating.get('123', parent_id: '456')
|
49
|
+
#
|
50
|
+
# Returns the document if found, nil if not found
|
51
|
+
def get(id, parent_id: nil)
|
52
|
+
raise ArgumentError, "parent_id is required for getting child documents" if parent_document_type && parent_id.blank?
|
53
|
+
options = with_options({ id: id, fields: %w{ _source _parent } })
|
54
|
+
options.merge!(parent: parent_id) if parent_id
|
47
55
|
response = ActiveSupport::Notifications.instrument "search.elasticsearch", name: "Document#get", search: options do
|
48
56
|
Hashie::Mash.new client.get options
|
49
57
|
end
|
@@ -53,8 +61,13 @@ module Gummi
|
|
53
61
|
end
|
54
62
|
alias :find :get
|
55
63
|
|
56
|
-
def delete(
|
57
|
-
|
64
|
+
def delete(id, parent_id: nil)
|
65
|
+
raise ArgumentError, "parent_id is required for deleting child documents" if parent_document_type && parent_id.blank?
|
66
|
+
options = with_options(id: id)
|
67
|
+
options.merge! parent: parent_id if parent_id
|
68
|
+
response = ActiveSupport::Notifications.instrument "search.elasticsearch", name: "Document#delete!", search: options do
|
69
|
+
Hashie::Mash.new client.delete options
|
70
|
+
end
|
58
71
|
rescue ::Elasticsearch::Transport::Transport::Errors::NotFound
|
59
72
|
nil
|
60
73
|
end
|
@@ -83,6 +96,10 @@ module Gummi
|
|
83
96
|
Hashie::Mash.new client.delete_by_query options
|
84
97
|
end
|
85
98
|
|
99
|
+
def with_options(options = {})
|
100
|
+
{index: index.name, type: document_type}.merge options
|
101
|
+
end
|
102
|
+
|
86
103
|
# –––––––––––––––––––––
|
87
104
|
# Public Conversion API
|
88
105
|
# –––––––––––––––––––––
|
@@ -178,7 +195,7 @@ module Gummi
|
|
178
195
|
# –––––––––––––––––––––––––––
|
179
196
|
|
180
197
|
def client
|
181
|
-
Gummi
|
198
|
+
Gummi.client
|
182
199
|
end
|
183
200
|
|
184
201
|
private
|
@@ -188,18 +205,7 @@ module Gummi
|
|
188
205
|
# ––––––––––––––––––––––––
|
189
206
|
|
190
207
|
|
191
|
-
|
192
|
-
options = { index: index.name, type: document_type, id: id }
|
193
|
-
if parent_id
|
194
|
-
options.merge! parent: parent_id
|
195
|
-
elsif parent_document_type
|
196
|
-
raise ArgumentError, "The parent_id attribute is required for getting #{name} from Elastic Search"
|
197
|
-
end
|
198
|
-
response = ActiveSupport::Notifications.instrument "search.elasticsearch", name: "Document#delete!", search: options do
|
199
|
-
Hashie::Mash.new client.delete options
|
200
|
-
end
|
201
|
-
response.found
|
202
|
-
end
|
208
|
+
|
203
209
|
|
204
210
|
end
|
205
211
|
|
data/lib/gummi/db_layer/index.rb
CHANGED
data/lib/gummi/version.rb
CHANGED
data/lib/gummi.rb
CHANGED
@@ -11,7 +11,6 @@ require 'repobahn/entity'
|
|
11
11
|
|
12
12
|
require 'gummi/version'
|
13
13
|
require 'gummi/errors'
|
14
|
-
require 'gummi/api'
|
15
14
|
require 'gummi/configuration'
|
16
15
|
|
17
16
|
require 'gummi/db_layer/index'
|
@@ -46,4 +45,21 @@ module Gummi
|
|
46
45
|
RAILS_ENV || 'development'
|
47
46
|
end
|
48
47
|
end
|
48
|
+
|
49
|
+
def self.config
|
50
|
+
@config ||= Configuration.new
|
51
|
+
end
|
52
|
+
|
53
|
+
def self.configure(&block)
|
54
|
+
yield config
|
55
|
+
end
|
56
|
+
|
57
|
+
def self.client
|
58
|
+
@client ||= ::Elasticsearch::Client.new Gummi.config.attributes
|
59
|
+
end
|
60
|
+
|
61
|
+
def self.reload_configuration!
|
62
|
+
@client = ::Elasticsearch::Client.new Gummi.config.attributes
|
63
|
+
end
|
64
|
+
|
49
65
|
end
|
@@ -110,7 +110,7 @@ describe Gummi::DbLayer::Document do
|
|
110
110
|
let(:rating) { DB::Rating.create person_id: person.id, stars: 5 }
|
111
111
|
|
112
112
|
it 'creates and retrieves child documents' do
|
113
|
-
persisted_rating = DB::Rating.get(rating.id, person.id)
|
113
|
+
persisted_rating = DB::Rating.get(rating.id, parent_id: person.id)
|
114
114
|
persisted_rating.person_id.should == person.id
|
115
115
|
end
|
116
116
|
|
@@ -122,16 +122,16 @@ describe Gummi::DbLayer::Document do
|
|
122
122
|
|
123
123
|
describe '#delete_children_by_query' do
|
124
124
|
before do
|
125
|
-
DB::Rating.get(rating.id, person.id)
|
125
|
+
DB::Rating.get(rating.id, parent_id: person.id)
|
126
126
|
Gummi::DbLayer::DefaultIndex.refresh
|
127
127
|
end
|
128
128
|
|
129
129
|
it 'deletes children by a query' do
|
130
|
-
DB::Rating.get(rating.id, person.id).should be_true
|
130
|
+
DB::Rating.get(rating.id, parent_id: person.id).should be_true
|
131
131
|
DB::Rating.delete_children_by_query(person.id, term: { stars: 3 }).should be_true
|
132
|
-
DB::Rating.get(rating.id, person.id).should be_true
|
132
|
+
DB::Rating.get(rating.id, parent_id: person.id).should be_true
|
133
133
|
DB::Rating.delete_children_by_query(person.id, term: { stars: 5 }).should be_true
|
134
|
-
DB::Rating.get(rating.id, person.id).should be_nil
|
134
|
+
DB::Rating.get(rating.id, parent_id: person.id).should be_nil
|
135
135
|
end
|
136
136
|
end
|
137
137
|
|
metadata
CHANGED
@@ -1,190 +1,167 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gummi
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
5
|
-
prerelease:
|
4
|
+
version: 1.0.3
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- bukowskis
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2014-
|
11
|
+
date: 2014-04-04 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: virtus
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - ">="
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: '0'
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- -
|
24
|
+
- - ">="
|
28
25
|
- !ruby/object:Gem::Version
|
29
26
|
version: '0'
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: elasticsearch
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- - ~>
|
31
|
+
- - "~>"
|
36
32
|
- !ruby/object:Gem::Version
|
37
33
|
version: 1.0.1
|
38
34
|
type: :runtime
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
|
-
- - ~>
|
38
|
+
- - "~>"
|
44
39
|
- !ruby/object:Gem::Version
|
45
40
|
version: 1.0.1
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: activesupport
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
|
-
- -
|
45
|
+
- - ">="
|
52
46
|
- !ruby/object:Gem::Version
|
53
47
|
version: '3.0'
|
54
48
|
type: :runtime
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
|
-
- -
|
52
|
+
- - ">="
|
60
53
|
- !ruby/object:Gem::Version
|
61
54
|
version: '3.0'
|
62
55
|
- !ruby/object:Gem::Dependency
|
63
56
|
name: activemodel
|
64
57
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
58
|
requirements:
|
67
|
-
- -
|
59
|
+
- - ">="
|
68
60
|
- !ruby/object:Gem::Version
|
69
61
|
version: '3.0'
|
70
62
|
type: :runtime
|
71
63
|
prerelease: false
|
72
64
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
65
|
requirements:
|
75
|
-
- -
|
66
|
+
- - ">="
|
76
67
|
- !ruby/object:Gem::Version
|
77
68
|
version: '3.0'
|
78
69
|
- !ruby/object:Gem::Dependency
|
79
70
|
name: hooks
|
80
71
|
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
72
|
requirements:
|
83
|
-
- - ~>
|
73
|
+
- - "~>"
|
84
74
|
- !ruby/object:Gem::Version
|
85
75
|
version: 0.3.3
|
86
76
|
type: :runtime
|
87
77
|
prerelease: false
|
88
78
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
79
|
requirements:
|
91
|
-
- - ~>
|
80
|
+
- - "~>"
|
92
81
|
- !ruby/object:Gem::Version
|
93
82
|
version: 0.3.3
|
94
83
|
- !ruby/object:Gem::Dependency
|
95
84
|
name: leaflet
|
96
85
|
requirement: !ruby/object:Gem::Requirement
|
97
|
-
none: false
|
98
86
|
requirements:
|
99
|
-
- -
|
87
|
+
- - ">="
|
100
88
|
- !ruby/object:Gem::Version
|
101
89
|
version: '0'
|
102
90
|
type: :runtime
|
103
91
|
prerelease: false
|
104
92
|
version_requirements: !ruby/object:Gem::Requirement
|
105
|
-
none: false
|
106
93
|
requirements:
|
107
|
-
- -
|
94
|
+
- - ">="
|
108
95
|
- !ruby/object:Gem::Version
|
109
96
|
version: '0'
|
110
97
|
- !ruby/object:Gem::Dependency
|
111
98
|
name: hashie
|
112
99
|
requirement: !ruby/object:Gem::Requirement
|
113
|
-
none: false
|
114
100
|
requirements:
|
115
|
-
- -
|
101
|
+
- - ">="
|
116
102
|
- !ruby/object:Gem::Version
|
117
103
|
version: '0'
|
118
104
|
type: :runtime
|
119
105
|
prerelease: false
|
120
106
|
version_requirements: !ruby/object:Gem::Requirement
|
121
|
-
none: false
|
122
107
|
requirements:
|
123
|
-
- -
|
108
|
+
- - ">="
|
124
109
|
- !ruby/object:Gem::Version
|
125
110
|
version: '0'
|
126
111
|
- !ruby/object:Gem::Dependency
|
127
112
|
name: bundler
|
128
113
|
requirement: !ruby/object:Gem::Requirement
|
129
|
-
none: false
|
130
114
|
requirements:
|
131
|
-
- - ~>
|
115
|
+
- - "~>"
|
132
116
|
- !ruby/object:Gem::Version
|
133
117
|
version: '1.3'
|
134
118
|
type: :development
|
135
119
|
prerelease: false
|
136
120
|
version_requirements: !ruby/object:Gem::Requirement
|
137
|
-
none: false
|
138
121
|
requirements:
|
139
|
-
- - ~>
|
122
|
+
- - "~>"
|
140
123
|
- !ruby/object:Gem::Version
|
141
124
|
version: '1.3'
|
142
125
|
- !ruby/object:Gem::Dependency
|
143
126
|
name: pry
|
144
127
|
requirement: !ruby/object:Gem::Requirement
|
145
|
-
none: false
|
146
128
|
requirements:
|
147
|
-
- -
|
129
|
+
- - ">="
|
148
130
|
- !ruby/object:Gem::Version
|
149
131
|
version: '0'
|
150
132
|
type: :development
|
151
133
|
prerelease: false
|
152
134
|
version_requirements: !ruby/object:Gem::Requirement
|
153
|
-
none: false
|
154
135
|
requirements:
|
155
|
-
- -
|
136
|
+
- - ">="
|
156
137
|
- !ruby/object:Gem::Version
|
157
138
|
version: '0'
|
158
139
|
- !ruby/object:Gem::Dependency
|
159
140
|
name: rake
|
160
141
|
requirement: !ruby/object:Gem::Requirement
|
161
|
-
none: false
|
162
142
|
requirements:
|
163
|
-
- -
|
143
|
+
- - ">="
|
164
144
|
- !ruby/object:Gem::Version
|
165
145
|
version: '0'
|
166
146
|
type: :development
|
167
147
|
prerelease: false
|
168
148
|
version_requirements: !ruby/object:Gem::Requirement
|
169
|
-
none: false
|
170
149
|
requirements:
|
171
|
-
- -
|
150
|
+
- - ">="
|
172
151
|
- !ruby/object:Gem::Version
|
173
152
|
version: '0'
|
174
153
|
- !ruby/object:Gem::Dependency
|
175
154
|
name: rspec
|
176
155
|
requirement: !ruby/object:Gem::Requirement
|
177
|
-
none: false
|
178
156
|
requirements:
|
179
|
-
- -
|
157
|
+
- - ">="
|
180
158
|
- !ruby/object:Gem::Version
|
181
159
|
version: '0'
|
182
160
|
type: :development
|
183
161
|
prerelease: false
|
184
162
|
version_requirements: !ruby/object:Gem::Requirement
|
185
|
-
none: false
|
186
163
|
requirements:
|
187
|
-
- -
|
164
|
+
- - ">="
|
188
165
|
- !ruby/object:Gem::Version
|
189
166
|
version: '0'
|
190
167
|
description: A small wrapper around Elasticsearch
|
@@ -194,9 +171,9 @@ executables:
|
|
194
171
|
extensions: []
|
195
172
|
extra_rdoc_files: []
|
196
173
|
files:
|
197
|
-
- .gitignore
|
198
|
-
- .rspec
|
199
|
-
- .ruby-version
|
174
|
+
- ".gitignore"
|
175
|
+
- ".rspec"
|
176
|
+
- ".ruby-version"
|
200
177
|
- Gemfile
|
201
178
|
- Guardfile
|
202
179
|
- LICENSE.txt
|
@@ -205,7 +182,6 @@ files:
|
|
205
182
|
- bin/console
|
206
183
|
- gummi.gemspec
|
207
184
|
- lib/gummi.rb
|
208
|
-
- lib/gummi/api.rb
|
209
185
|
- lib/gummi/configuration.rb
|
210
186
|
- lib/gummi/db_layer/default_index.rb
|
211
187
|
- lib/gummi/db_layer/document.rb
|
@@ -264,27 +240,26 @@ files:
|
|
264
240
|
homepage: ''
|
265
241
|
licenses:
|
266
242
|
- MIT
|
243
|
+
metadata: {}
|
267
244
|
post_install_message:
|
268
245
|
rdoc_options: []
|
269
246
|
require_paths:
|
270
247
|
- lib
|
271
248
|
required_ruby_version: !ruby/object:Gem::Requirement
|
272
|
-
none: false
|
273
249
|
requirements:
|
274
|
-
- -
|
250
|
+
- - ">="
|
275
251
|
- !ruby/object:Gem::Version
|
276
252
|
version: '0'
|
277
253
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
278
|
-
none: false
|
279
254
|
requirements:
|
280
|
-
- -
|
255
|
+
- - ">="
|
281
256
|
- !ruby/object:Gem::Version
|
282
257
|
version: '0'
|
283
258
|
requirements: []
|
284
259
|
rubyforge_project:
|
285
|
-
rubygems_version:
|
260
|
+
rubygems_version: 2.2.2
|
286
261
|
signing_key:
|
287
|
-
specification_version:
|
262
|
+
specification_version: 4
|
288
263
|
summary: A small wrapper around Elasticsearch
|
289
264
|
test_files:
|
290
265
|
- spec/lib/gummi/db_layer/document_spec.rb
|
@@ -311,4 +286,3 @@ test_files:
|
|
311
286
|
- spec/support/models/db/ship.rb
|
312
287
|
- spec/support/models/people.rb
|
313
288
|
- spec/support/models/person.rb
|
314
|
-
has_rdoc:
|