gummi 1.0.2 → 1.0.3

Sign up to get free protection for your applications and to get access to all the features.
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.9.3-p484
1
+ 2.1.1
@@ -3,36 +3,25 @@ require 'logger'
3
3
  module Gummi
4
4
  class Configuration
5
5
 
6
- attr_accessor :logger
6
+ include Virtus.model
7
7
 
8
- def initialize(options={})
9
- @logger = options[:logger] || default_logger
10
- end
11
-
12
- private
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(STDOUT)
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
- # Public: Reset the configuration (useful for testing).
34
- #
35
- def self.reset!
36
- @config = nil
23
+ def default_hosts
24
+ ENV.fetch('GUMMI_HOSTS', 'localhost:9200').split(',')
25
+ end
37
26
  end
38
27
  end
@@ -46,7 +46,7 @@ module Gummi
46
46
  end
47
47
 
48
48
  def client
49
- Gummi::API.client
49
+ Gummi.client
50
50
  end
51
51
 
52
52
  end
@@ -29,7 +29,7 @@ module Gummi
29
29
  #
30
30
  # Returns true or false
31
31
  def exists?(id)
32
- client.exists index: index.name, type: document_type, id: id
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
- def get(id, parent_id = nil)
41
- options = { index: index.name, type: document_type, id: id, fields: %w{ _source _parent } }
42
- if parent_id
43
- options.merge! parent: parent_id
44
- elsif parent_document_type
45
- raise ArgumentError, "The parent_id attribute is required for getting #{name} from Elastic Search"
46
- end
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(*args)
57
- delete! *args
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::API.client
198
+ Gummi.client
182
199
  end
183
200
 
184
201
  private
@@ -188,18 +205,7 @@ module Gummi
188
205
  # ––––––––––––––––––––––––
189
206
 
190
207
 
191
- def delete!(id, parent_id = nil)
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
 
@@ -145,7 +145,7 @@ module Gummi
145
145
  end
146
146
 
147
147
  def client
148
- Gummi::API.client
148
+ Gummi.client
149
149
  end
150
150
 
151
151
  end
@@ -45,8 +45,8 @@ module Gummi
45
45
  end
46
46
 
47
47
  def set_id_and_version(entity, db_instance)
48
- entity.id = db_instance.id
49
- entity.version = db_instance.version
48
+ entity.id = db_instance['id']
49
+ entity.version = db_instance['version']
50
50
  end
51
51
 
52
52
  end
data/lib/gummi/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Gummi
2
- VERSION = '1.0.2'
2
+ VERSION = '1.0.3'
3
3
  end
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.2
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-03-26 00:00:00.000000000 Z
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: 1.8.23
260
+ rubygems_version: 2.2.2
286
261
  signing_key:
287
- specification_version: 3
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:
data/lib/gummi/api.rb DELETED
@@ -1,9 +0,0 @@
1
- module Gummi
2
- module API
3
-
4
- def self.client
5
- @client ||= ::Elasticsearch::Client.new log: false
6
- end
7
-
8
- end
9
- end