elasticsearch-persistence 6.0.0.pre → 6.0.0
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 +4 -4
- data/README.md +48 -24
- data/examples/notes/application.rb +3 -4
- data/lib/elasticsearch/persistence/repository/response/results.rb +9 -8
- data/lib/elasticsearch/persistence/repository/search.rb +18 -17
- data/lib/elasticsearch/persistence/version.rb +1 -1
- data/spec/repository/response/results_spec.rb +23 -0
- metadata +4 -26
- data/examples/music/album.rb +0 -54
- data/examples/music/artist.rb +0 -70
- data/examples/music/artists/_form.html.erb +0 -8
- data/examples/music/artists/artists_controller.rb +0 -67
- data/examples/music/artists/artists_controller_test.rb +0 -53
- data/examples/music/artists/index.html.erb +0 -60
- data/examples/music/artists/show.html.erb +0 -54
- data/examples/music/assets/application.css +0 -257
- data/examples/music/assets/autocomplete.css +0 -48
- data/examples/music/assets/blank_artist.png +0 -0
- data/examples/music/assets/blank_cover.png +0 -0
- data/examples/music/assets/form.css +0 -113
- data/examples/music/index_manager.rb +0 -73
- data/examples/music/search/index.html.erb +0 -95
- data/examples/music/search/search_controller.rb +0 -41
- data/examples/music/search/search_controller_test.rb +0 -12
- data/examples/music/search/search_helper.rb +0 -15
- data/examples/music/suggester.rb +0 -69
- data/examples/music/template.rb +0 -430
- data/examples/music/vendor/assets/jquery-ui-1.10.4.custom.min.css +0 -7
- data/examples/music/vendor/assets/jquery-ui-1.10.4.custom.min.js +0 -6
- data/examples/music/vendor/assets/stylesheets/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 31bf48d65a26143768e093d3ef1a26f0d95adb5f4f009448b1b48cde4f1b643a
|
4
|
+
data.tar.gz: bf4f4581573e35a873cb8d1f2db6ec86ddf39420010fcaab6e00fced48f91376
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4e353c41e60cfa475821d87107aaceffaf399f0da68a28d8ecc529b5aadf3257bdc0df61f07a22055645ad143279cc1d30e895b505837bf540813e089622a95a
|
7
|
+
data.tar.gz: ec8f36fb64a038a5d0ec91bb51404b0c15d1d2b731175eba456098030c841c7e4d269c0e9f14c425b79a52b6531af1402c968a556560b29a8608df27c36b14a3
|
data/README.md
CHANGED
@@ -42,7 +42,7 @@ The library provides the Repository pattern for adding persistence to your Ruby
|
|
42
42
|
|
43
43
|
The `Elasticsearch::Persistence::Repository` module provides an implementation of the
|
44
44
|
[repository pattern](http://martinfowler.com/eaaCatalog/repository.html) and allows
|
45
|
-
to save, delete, find and search objects stored in Elasticsearch, as well as configure
|
45
|
+
you to save, delete, find and search objects stored in Elasticsearch, as well as configure
|
46
46
|
mappings and settings for the index. It's an unobtrusive and decoupled way of adding
|
47
47
|
persistence to your Ruby objects.
|
48
48
|
|
@@ -76,7 +76,7 @@ We can save a `Note` instance into the repository...
|
|
76
76
|
note = Note.new id: 1, text: 'Test'
|
77
77
|
|
78
78
|
repository.save(note)
|
79
|
-
# PUT http://localhost:9200/repository/
|
79
|
+
# PUT http://localhost:9200/repository/_doc/1 [status:201, request:0.210s, query:n/a]
|
80
80
|
# > {"id":1,"text":"Test"}
|
81
81
|
# < {"_index":"repository","_type":"note","_id":"1","_version":1,"created":true}
|
82
82
|
```
|
@@ -85,7 +85,7 @@ repository.save(note)
|
|
85
85
|
|
86
86
|
```ruby
|
87
87
|
n = repository.find(1)
|
88
|
-
# GET http://localhost:9200/repository/
|
88
|
+
# GET http://localhost:9200/repository/_doc/1 [status:200, request:0.003s, query:n/a]
|
89
89
|
# < {"_index":"repository","_type":"note","_id":"1","_version":2,"found":true, "_source" : {"id":1,"text":"Test"}}
|
90
90
|
=> <Note:0x007fcbfc0c4980 @attributes={"id"=>1, "text"=>"Test"}>
|
91
91
|
```
|
@@ -104,7 +104,7 @@ repository.search(query: { match: { text: 'test' } }).first
|
|
104
104
|
|
105
105
|
```ruby
|
106
106
|
repository.delete(note)
|
107
|
-
# DELETE http://localhost:9200/repository/
|
107
|
+
# DELETE http://localhost:9200/repository/_doc/1 [status:200, request:0.014s, query:n/a]
|
108
108
|
# < {"found":true,"_index":"repository","_type":"note","_id":"1","_version":3}
|
109
109
|
=> {"found"=>true, "_index"=>"repository", "_type"=>"note", "_id"=>"1", "_version"=>2}
|
110
110
|
```
|
@@ -145,7 +145,7 @@ class MyRepository
|
|
145
145
|
end
|
146
146
|
|
147
147
|
client = Elasticsearch::Client.new(url: ENV['ELASTICSEARCH_URL'], log: true)
|
148
|
-
repository = MyRepository.new(client: client, index_name: :my_notes, type: :
|
148
|
+
repository = MyRepository.new(client: client, index_name: :my_notes, type: :note, klass: Note)
|
149
149
|
repository.settings number_of_shards: 1 do
|
150
150
|
mapping do
|
151
151
|
indexes :text, analyzer: 'snowball'
|
@@ -168,7 +168,7 @@ Save the document with extra properties added by the `serialize` method:
|
|
168
168
|
|
169
169
|
```ruby
|
170
170
|
repository.save(note)
|
171
|
-
# PUT http://localhost:9200/my_notes/
|
171
|
+
# PUT http://localhost:9200/my_notes/note/1
|
172
172
|
# > {"id":1,"text":"Test","my_special_key":"my_special_stuff"}
|
173
173
|
{"_index"=>"my_notes", "_type"=>"my_note", "_id"=>"1", "_version"=>4, ... }
|
174
174
|
```
|
@@ -177,7 +177,7 @@ And `deserialize` it:
|
|
177
177
|
|
178
178
|
```ruby
|
179
179
|
repository.find(1)
|
180
|
-
# ***** CUSTOM DESERIALIZE LOGIC
|
180
|
+
# ***** CUSTOM DESERIALIZE LOGIC... *****
|
181
181
|
<Note:0x007f9bd782b7a0 @attributes={... "my_special_key"=>"my_special_stuff"}>
|
182
182
|
```
|
183
183
|
|
@@ -245,10 +245,10 @@ repository.create_index!(force: true)
|
|
245
245
|
note = Note.new('id' => 1, 'text' => 'Document with image', 'image' => '... BINARY DATA ...')
|
246
246
|
|
247
247
|
repository.save(note)
|
248
|
-
# PUT http://localhost:9200/notes_development/
|
248
|
+
# PUT http://localhost:9200/notes_development/_doc/1
|
249
249
|
# > {"id":1,"text":"Document with image","image":"Li4uIEJJTkFSWSBEQVRBIC4uLg==\n"}
|
250
250
|
puts repository.find(1).attributes['image']
|
251
|
-
# GET http://localhost:9200/notes_development/
|
251
|
+
# GET http://localhost:9200/notes_development/_doc/1
|
252
252
|
# < {... "_source" : { ... "image":"Li4uIEJJTkFSWSBEQVRBIC4uLg==\n"}}
|
253
253
|
# => ... BINARY DATA ...
|
254
254
|
```
|
@@ -257,9 +257,9 @@ puts repository.find(1).attributes['image']
|
|
257
257
|
|
258
258
|
Each of the following configurations can be set for a repository instance.
|
259
259
|
If you have included the `Elasticsearch::Persistence::Repository::DSL` mixin, then you can use the class-level DSL
|
260
|
-
methods to set each
|
260
|
+
methods to set each value. You can still override the configuration for any instance by passing options to the
|
261
261
|
`#initialize` method.
|
262
|
-
|
262
|
+
Even if you don't use the DSL mixin, you can set the instance configuration with options passed the `#initialize` method.
|
263
263
|
|
264
264
|
##### Client
|
265
265
|
|
@@ -269,6 +269,9 @@ The repository uses the standard Elasticsearch [client](https://github.com/elast
|
|
269
269
|
client = Elasticsearch::Client.new(url: 'http://search.server.org')
|
270
270
|
repository = NoteRepository.new(client: client)
|
271
271
|
repository.client.transport.logger = Logger.new(STDERR)
|
272
|
+
repository.client
|
273
|
+
# => Elasticsearch::Client
|
274
|
+
|
272
275
|
```
|
273
276
|
|
274
277
|
or with the DSL mixin:
|
@@ -282,6 +285,8 @@ class NoteRepository
|
|
282
285
|
end
|
283
286
|
|
284
287
|
repository = NoteRepository.new
|
288
|
+
repository.client
|
289
|
+
# => Elasticsearch::Client
|
285
290
|
|
286
291
|
```
|
287
292
|
|
@@ -292,6 +297,9 @@ is 'repository'.
|
|
292
297
|
|
293
298
|
```ruby
|
294
299
|
repository = NoteRepository.new(index_name: 'notes_development')
|
300
|
+
repository.index_name
|
301
|
+
# => 'notes_development'
|
302
|
+
|
295
303
|
```
|
296
304
|
|
297
305
|
or with the DSL mixin:
|
@@ -305,15 +313,20 @@ class NoteRepository
|
|
305
313
|
end
|
306
314
|
|
307
315
|
repository = NoteRepository.new
|
316
|
+
repository.index_name
|
317
|
+
# => 'notes_development'
|
308
318
|
|
309
319
|
```
|
310
320
|
|
311
|
-
The `
|
321
|
+
The `document_type` method specifies the Elasticsearch document type to use for storage, lookup and search. The default value is
|
312
322
|
'_doc'. Keep in mind that future versions of Elasticsearch will not allow you to set this yourself and will use the type,
|
313
323
|
'_doc'.
|
314
324
|
|
315
325
|
```ruby
|
316
326
|
repository = NoteRepository.new(document_type: 'note')
|
327
|
+
repository.document_type
|
328
|
+
# => 'note'
|
329
|
+
|
317
330
|
```
|
318
331
|
|
319
332
|
or with the DSL mixin:
|
@@ -327,6 +340,8 @@ class NoteRepository
|
|
327
340
|
end
|
328
341
|
|
329
342
|
repository = NoteRepository.new
|
343
|
+
repository.document_type
|
344
|
+
# => 'note'
|
330
345
|
|
331
346
|
```
|
332
347
|
|
@@ -336,6 +351,9 @@ returned instead.
|
|
336
351
|
|
337
352
|
```ruby
|
338
353
|
repository = NoteRepository.new(klass: Note)
|
354
|
+
repository.klass
|
355
|
+
# => Note
|
356
|
+
|
339
357
|
```
|
340
358
|
|
341
359
|
or with the DSL mixin:
|
@@ -349,6 +367,8 @@ class NoteRepository
|
|
349
367
|
end
|
350
368
|
|
351
369
|
repository = NoteRepository.new
|
370
|
+
repository.klass
|
371
|
+
# => Note
|
352
372
|
|
353
373
|
```
|
354
374
|
|
@@ -383,8 +403,10 @@ repository = NoteRepository.new
|
|
383
403
|
|
384
404
|
```
|
385
405
|
|
386
|
-
|
387
|
-
|
406
|
+
##### Create a Repository and set its configuration with a block
|
407
|
+
|
408
|
+
You can also use the `#create` method to instantiate and set the mappings and settings on an instance
|
409
|
+
with a block in one call:
|
388
410
|
|
389
411
|
```ruby
|
390
412
|
repository = NoteRepository.create(index_name: 'notes_development') do
|
@@ -399,13 +421,15 @@ repository = NoteRepository.create(index_name: 'notes_development') do
|
|
399
421
|
end
|
400
422
|
```
|
401
423
|
|
424
|
+
##### Index Management
|
425
|
+
|
402
426
|
The convenience methods `create_index!`, `delete_index!` and `refresh_index!` allow you to manage the index lifecycle.
|
403
427
|
These methods can only be called on repository instances and are not implemented at the class level.
|
404
428
|
|
405
429
|
##### Serialization
|
406
430
|
|
407
|
-
The `serialize` and `deserialize` methods allow you to customize the serialization of the document when
|
408
|
-
to
|
431
|
+
The `serialize` and `deserialize` methods allow you to customize the serialization of the document when it
|
432
|
+
is persisted to Elasticsearch, and define the initialization procedure when loading it from the storage:
|
409
433
|
|
410
434
|
```ruby
|
411
435
|
class NoteRepository
|
@@ -428,7 +452,7 @@ The `save` method allows you to store a domain object in the repository:
|
|
428
452
|
```ruby
|
429
453
|
note = Note.new id: 1, title: 'Quick Brown Fox'
|
430
454
|
repository.save(note)
|
431
|
-
# => {"_index"=>"notes_development", "_type"=>"
|
455
|
+
# => {"_index"=>"notes_development", "_type"=>"_doc", "_id"=>"1", "_version"=>1, "created"=>true}
|
432
456
|
```
|
433
457
|
|
434
458
|
The `update` method allows you to perform a partial update of a document in the repository.
|
@@ -436,18 +460,18 @@ Use either a partial document:
|
|
436
460
|
|
437
461
|
```ruby
|
438
462
|
repository.update id: 1, title: 'UPDATED', tags: []
|
439
|
-
# => {"_index"=>"notes_development", "_type"=>"
|
463
|
+
# => {"_index"=>"notes_development", "_type"=>"_doc", "_id"=>"1", "_version"=>2}
|
440
464
|
```
|
441
465
|
|
442
466
|
Or a script (optionally with parameters):
|
443
467
|
|
444
468
|
```ruby
|
445
469
|
repository.update 1, script: 'if (!ctx._source.tags.contains(t)) { ctx._source.tags += t }', params: { t: 'foo' }
|
446
|
-
# => {"_index"=>"notes_development", "_type"=>"
|
470
|
+
# => {"_index"=>"notes_development", "_type"=>"_doc", "_id"=>"1", "_version"=>3}
|
447
471
|
```
|
448
472
|
|
449
473
|
|
450
|
-
The `delete` method allows to remove objects from the repository (pass either the object itself or its ID):
|
474
|
+
The `delete` method allows you to remove objects from the repository (pass either the object itself or its ID):
|
451
475
|
|
452
476
|
```ruby
|
453
477
|
repository.delete(note)
|
@@ -456,7 +480,7 @@ repository.delete(1)
|
|
456
480
|
|
457
481
|
##### Finding
|
458
482
|
|
459
|
-
The `find` method allows to find one or many documents in the storage and returns them as deserialized Ruby objects:
|
483
|
+
The `find` method allows you to find one or many documents in the storage and returns them as deserialized Ruby objects:
|
460
484
|
|
461
485
|
```ruby
|
462
486
|
repository.save Note.new(id: 2, title: 'Fast White Dog')
|
@@ -479,15 +503,15 @@ Handle the missing objects in the application code, or call `compact` on the res
|
|
479
503
|
|
480
504
|
##### Search
|
481
505
|
|
482
|
-
The `search` method to retrieve objects from the repository by a query string or definition in the Elasticsearch DSL:
|
506
|
+
The `search` method is used to retrieve objects from the repository by a query string or definition in the Elasticsearch DSL:
|
483
507
|
|
484
508
|
```ruby
|
485
509
|
repository.search('fox or dog').to_a
|
486
|
-
# GET http://localhost:9200/notes_development/
|
510
|
+
# GET http://localhost:9200/notes_development/_doc/_search?q=fox
|
487
511
|
# => [<MyNote ... FOX ...>, <MyNote ... DOG ...>]
|
488
512
|
|
489
513
|
repository.search(query: { match: { title: 'fox dog' } }).to_a
|
490
|
-
# GET http://localhost:9200/notes_development/
|
514
|
+
# GET http://localhost:9200/notes_development/_doc/_search
|
491
515
|
# > {"query":{"match":{"title":"fox dog"}}}
|
492
516
|
# => [<MyNote ... FOX ...>, <MyNote ... DOG ...>]
|
493
517
|
```
|
@@ -54,11 +54,12 @@ end
|
|
54
54
|
|
55
55
|
class NoteRepository
|
56
56
|
include Elasticsearch::Persistence::Repository
|
57
|
+
include Elasticsearch::Persistence::Repository::DSL
|
57
58
|
|
58
59
|
client Elasticsearch::Client.new url: ENV['ELASTICSEARCH_URL'], log: true
|
59
60
|
|
60
|
-
|
61
|
-
|
61
|
+
index_name :notes
|
62
|
+
document_type :note
|
62
63
|
|
63
64
|
mapping do
|
64
65
|
indexes :text, analyzer: 'snowball'
|
@@ -66,8 +67,6 @@ class NoteRepository
|
|
66
67
|
indexes :created_at, type: 'date'
|
67
68
|
end
|
68
69
|
|
69
|
-
create_index!
|
70
|
-
|
71
70
|
def deserialize(document)
|
72
71
|
Note.new document['_source'].merge('id' => document['_id'])
|
73
72
|
end
|
@@ -11,6 +11,7 @@ module Elasticsearch
|
|
11
11
|
include Enumerable
|
12
12
|
|
13
13
|
attr_reader :repository
|
14
|
+
attr_reader :raw_response
|
14
15
|
|
15
16
|
# The key for accessing the results in an Elasticsearch query response.
|
16
17
|
#
|
@@ -30,8 +31,8 @@ module Elasticsearch
|
|
30
31
|
#
|
31
32
|
def initialize(repository, response, options={})
|
32
33
|
@repository = repository
|
33
|
-
@
|
34
|
-
@options
|
34
|
+
@raw_response = response
|
35
|
+
@options = options
|
35
36
|
end
|
36
37
|
|
37
38
|
def method_missing(method_name, *arguments, &block)
|
@@ -45,25 +46,25 @@ module Elasticsearch
|
|
45
46
|
# The number of total hits for a query
|
46
47
|
#
|
47
48
|
def total
|
48
|
-
|
49
|
+
raw_response[HITS][TOTAL]
|
49
50
|
end
|
50
51
|
|
51
52
|
# The maximum score for a query
|
52
53
|
#
|
53
54
|
def max_score
|
54
|
-
|
55
|
+
raw_response[HITS][MAX_SCORE]
|
55
56
|
end
|
56
57
|
|
57
58
|
# Yields [object, hit] pairs to the block
|
58
59
|
#
|
59
60
|
def each_with_hit(&block)
|
60
|
-
results.zip(
|
61
|
+
results.zip(raw_response[HITS][HITS]).each(&block)
|
61
62
|
end
|
62
63
|
|
63
64
|
# Yields [object, hit] pairs and returns the result
|
64
65
|
#
|
65
66
|
def map_with_hit(&block)
|
66
|
-
results.zip(
|
67
|
+
results.zip(raw_response[HITS][HITS]).map(&block)
|
67
68
|
end
|
68
69
|
|
69
70
|
# Return the collection of domain objects
|
@@ -76,7 +77,7 @@ module Elasticsearch
|
|
76
77
|
# @return [Array]
|
77
78
|
#
|
78
79
|
def results
|
79
|
-
@results ||=
|
80
|
+
@results ||= raw_response[HITS][HITS].map do |document|
|
80
81
|
repository.deserialize(document.to_hash)
|
81
82
|
end
|
82
83
|
end
|
@@ -93,7 +94,7 @@ module Elasticsearch
|
|
93
94
|
# @return [Elasticsearch::Model::HashWrapper]
|
94
95
|
#
|
95
96
|
def response
|
96
|
-
@response
|
97
|
+
@response ||= Elasticsearch::Model::HashWrapper.new(raw_response)
|
97
98
|
end
|
98
99
|
end
|
99
100
|
end
|
@@ -43,18 +43,18 @@ module Elasticsearch
|
|
43
43
|
# @return [Elasticsearch::Persistence::Repository::Response::Results]
|
44
44
|
#
|
45
45
|
def search(query_or_definition, options={})
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
response = client.search( { index: index_name, type: type, q: query_or_definition }.merge(options) )
|
46
|
+
request = { index: index_name,
|
47
|
+
type: document_type }
|
48
|
+
if query_or_definition.respond_to?(:to_hash)
|
49
|
+
request[:body] = query_or_definition.to_hash
|
50
|
+
elsif query_or_definition.is_a?(String)
|
51
|
+
request[:q] = query_or_definition
|
53
52
|
else
|
54
53
|
raise ArgumentError, "[!] Pass the search definition as a Hash-like object or pass the query as a String" +
|
55
|
-
|
54
|
+
" -- #{query_or_definition.class} given."
|
56
55
|
end
|
57
|
-
|
56
|
+
|
57
|
+
Response::Results.new(self, client.search(request.merge(options)))
|
58
58
|
end
|
59
59
|
|
60
60
|
# Return the number of domain object in the index
|
@@ -81,18 +81,19 @@ module Elasticsearch
|
|
81
81
|
#
|
82
82
|
def count(query_or_definition=nil, options={})
|
83
83
|
query_or_definition ||= { query: { match_all: {} } }
|
84
|
-
|
84
|
+
request = { index: index_name,
|
85
|
+
type: document_type }
|
85
86
|
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
response = client.count( { index: index_name, type: type, q: query_or_definition }.merge(options) )
|
87
|
+
if query_or_definition.respond_to?(:to_hash)
|
88
|
+
request[:body] = query_or_definition.to_hash
|
89
|
+
elsif query_or_definition.is_a?(String)
|
90
|
+
request[:q] = query_or_definition
|
91
91
|
else
|
92
|
-
raise ArgumentError, "[!] Pass the search definition as a Hash-like object or pass the query as a String
|
92
|
+
raise ArgumentError, "[!] Pass the search definition as a Hash-like object or pass the query as a String" +
|
93
|
+
" -- #{query_or_definition.class} given."
|
93
94
|
end
|
94
95
|
|
95
|
-
|
96
|
+
client.count(request.merge(options))[COUNT]
|
96
97
|
end
|
97
98
|
|
98
99
|
private
|
@@ -66,6 +66,22 @@ describe Elasticsearch::Persistence::Repository::Response::Results do
|
|
66
66
|
it 'wraps the response in a HashWrapper' do
|
67
67
|
expect(results.response._shards.total).to eq(5)
|
68
68
|
end
|
69
|
+
|
70
|
+
context 'when the response method is not called' do
|
71
|
+
|
72
|
+
it 'does not create an instance of HashWrapper' do
|
73
|
+
expect(Elasticsearch::Model::HashWrapper).not_to receive(:new)
|
74
|
+
results
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
context 'when the response method is called' do
|
79
|
+
|
80
|
+
it 'does create an instance of HashWrapper' do
|
81
|
+
expect(Elasticsearch::Model::HashWrapper).to receive(:new)
|
82
|
+
results.response
|
83
|
+
end
|
84
|
+
end
|
69
85
|
end
|
70
86
|
|
71
87
|
describe '#total' do
|
@@ -102,4 +118,11 @@ describe Elasticsearch::Persistence::Repository::Response::Results do
|
|
102
118
|
expect(results.map_with_hit { |pair| pair[0] }).to eq(['Object', 'Object'])
|
103
119
|
end
|
104
120
|
end
|
121
|
+
|
122
|
+
describe '#raw_response' do
|
123
|
+
|
124
|
+
it 'returns the raw response from Elasticsearch' do
|
125
|
+
expect(results.raw_response).to eq(response)
|
126
|
+
end
|
127
|
+
end
|
105
128
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: elasticsearch-persistence
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 6.0.0
|
4
|
+
version: 6.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Karel Minarik
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-09-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: elasticsearch
|
@@ -307,28 +307,6 @@ files:
|
|
307
307
|
- README.md
|
308
308
|
- Rakefile
|
309
309
|
- elasticsearch-persistence.gemspec
|
310
|
-
- examples/music/album.rb
|
311
|
-
- examples/music/artist.rb
|
312
|
-
- examples/music/artists/_form.html.erb
|
313
|
-
- examples/music/artists/artists_controller.rb
|
314
|
-
- examples/music/artists/artists_controller_test.rb
|
315
|
-
- examples/music/artists/index.html.erb
|
316
|
-
- examples/music/artists/show.html.erb
|
317
|
-
- examples/music/assets/application.css
|
318
|
-
- examples/music/assets/autocomplete.css
|
319
|
-
- examples/music/assets/blank_artist.png
|
320
|
-
- examples/music/assets/blank_cover.png
|
321
|
-
- examples/music/assets/form.css
|
322
|
-
- examples/music/index_manager.rb
|
323
|
-
- examples/music/search/index.html.erb
|
324
|
-
- examples/music/search/search_controller.rb
|
325
|
-
- examples/music/search/search_controller_test.rb
|
326
|
-
- examples/music/search/search_helper.rb
|
327
|
-
- examples/music/suggester.rb
|
328
|
-
- examples/music/template.rb
|
329
|
-
- examples/music/vendor/assets/jquery-ui-1.10.4.custom.min.css
|
330
|
-
- examples/music/vendor/assets/jquery-ui-1.10.4.custom.min.js
|
331
|
-
- examples/music/vendor/assets/stylesheets/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png
|
332
310
|
- examples/notes/.gitignore
|
333
311
|
- examples/notes/Gemfile
|
334
312
|
- examples/notes/README.markdown
|
@@ -367,9 +345,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
367
345
|
version: 1.9.3
|
368
346
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
369
347
|
requirements:
|
370
|
-
- - "
|
348
|
+
- - ">="
|
371
349
|
- !ruby/object:Gem::Version
|
372
|
-
version:
|
350
|
+
version: '0'
|
373
351
|
requirements: []
|
374
352
|
rubyforge_project:
|
375
353
|
rubygems_version: 2.7.7
|