agnostic_backend 0.9.3 → 0.9.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.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/lib/agnostic_backend.rb +1 -0
- data/lib/agnostic_backend/indexable/content_manager.rb +3 -2
- data/lib/agnostic_backend/indexable/indexable.rb +3 -2
- data/lib/agnostic_backend/indexable/object_observer.rb +17 -0
- data/lib/agnostic_backend/version.rb +1 -1
- metadata +3 -3
- data/Gemfile.lock +0 -53
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f379b563c7fa6fc0d4fbbef69222931eaaa0efc0
|
4
|
+
data.tar.gz: cedf4be31fc43e9576fdcb49586427fcffd67dc2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2dc5e38d7662a707d082e275a89450157dad30aa518f9c0bc19bf6dc097d2b44b93baf397d5598e12f94ccc7d6fd4b378404adc3d85ea814046fa99fbbe23b31
|
7
|
+
data.tar.gz: d2ad6dbdae2102814a100a4588365d67ad0b8c04806c21145db590370b96b1cdc6a366d10ddc4ba0045961f786d71d954878bab3a7d4d27895f7d9510b80f4b5
|
data/.gitignore
CHANGED
data/lib/agnostic_backend.rb
CHANGED
@@ -8,6 +8,7 @@ require 'agnostic_backend/indexable/config'
|
|
8
8
|
require 'agnostic_backend/indexable/field_type'
|
9
9
|
require 'agnostic_backend/indexable/field'
|
10
10
|
require 'agnostic_backend/indexable/content_manager'
|
11
|
+
require 'agnostic_backend/indexable/object_observer'
|
11
12
|
|
12
13
|
require 'agnostic_backend/index'
|
13
14
|
require 'agnostic_backend/indexer'
|
@@ -30,12 +30,13 @@ module AgnosticBackend
|
|
30
30
|
from: from, **options)
|
31
31
|
end
|
32
32
|
|
33
|
-
def extract_contents_from(object, index_name)
|
33
|
+
def extract_contents_from(object, index_name, observer:)
|
34
34
|
kv_pairs = contents.map do |field_name, field|
|
35
35
|
field_value = field.evaluate(context: object)
|
36
36
|
if field.type.nested?
|
37
37
|
if field_value.respond_to? :generate_document
|
38
|
-
|
38
|
+
observer.add(field_value)
|
39
|
+
field_value = field_value.generate_document(for_index: index_name, observer: observer)
|
39
40
|
elsif field_value.present?
|
40
41
|
field_name = nil
|
41
42
|
end
|
@@ -88,12 +88,13 @@ module AgnosticBackend
|
|
88
88
|
self.class.index_name(source)
|
89
89
|
end
|
90
90
|
|
91
|
-
def generate_document(for_index: nil)
|
91
|
+
def generate_document(for_index: nil, observer: nil)
|
92
92
|
index_name = for_index.nil? ? self.index_name : for_index.to_s
|
93
93
|
return unless respond_to? :_index_content_managers
|
94
94
|
manager = _index_content_managers[index_name.to_s]
|
95
95
|
raise "Index #{index_name} does not exist" if manager.nil?
|
96
|
-
|
96
|
+
observer ||= AgnosticBackend::Indexable::ObjectObserver.new
|
97
|
+
manager.extract_contents_from self, index_name, observer: observer
|
97
98
|
end
|
98
99
|
|
99
100
|
def put_to_index(index_name=nil)
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module AgnosticBackend
|
2
|
+
module Indexable
|
3
|
+
|
4
|
+
class CircularReferenceError < StandardError; end
|
5
|
+
|
6
|
+
class ObjectObserver
|
7
|
+
def initialize
|
8
|
+
@objects = Set.new
|
9
|
+
end
|
10
|
+
|
11
|
+
def add(obj)
|
12
|
+
raise CircularReferenceError.new(obj) if @objects.include? obj
|
13
|
+
@objects << obj
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: agnostic_backend
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Iasonas Gavriilidis
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: exe
|
12
12
|
cert_chain: []
|
13
|
-
date: 2016-
|
13
|
+
date: 2016-06-14 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: activesupport
|
@@ -126,7 +126,6 @@ files:
|
|
126
126
|
- ".travis.yml"
|
127
127
|
- CODE_OF_CONDUCT.md
|
128
128
|
- Gemfile
|
129
|
-
- Gemfile.lock
|
130
129
|
- LICENSE.txt
|
131
130
|
- README.md
|
132
131
|
- Rakefile
|
@@ -146,6 +145,7 @@ files:
|
|
146
145
|
- lib/agnostic_backend/indexable/field.rb
|
147
146
|
- lib/agnostic_backend/indexable/field_type.rb
|
148
147
|
- lib/agnostic_backend/indexable/indexable.rb
|
148
|
+
- lib/agnostic_backend/indexable/object_observer.rb
|
149
149
|
- lib/agnostic_backend/indexer.rb
|
150
150
|
- lib/agnostic_backend/queryable/attribute.rb
|
151
151
|
- lib/agnostic_backend/queryable/cloudsearch/executor.rb
|
data/Gemfile.lock
DELETED
@@ -1,53 +0,0 @@
|
|
1
|
-
PATH
|
2
|
-
remote: .
|
3
|
-
specs:
|
4
|
-
agnostic_backend (0.9.3)
|
5
|
-
activesupport (~> 3)
|
6
|
-
aws-sdk (~> 2)
|
7
|
-
|
8
|
-
GEM
|
9
|
-
remote: https://rubygems.org/
|
10
|
-
specs:
|
11
|
-
activesupport (3.2.22.2)
|
12
|
-
i18n (~> 0.6, >= 0.6.4)
|
13
|
-
multi_json (~> 1.0)
|
14
|
-
aws-sdk (2.2.29)
|
15
|
-
aws-sdk-resources (= 2.2.29)
|
16
|
-
aws-sdk-core (2.2.29)
|
17
|
-
jmespath (~> 1.0)
|
18
|
-
aws-sdk-resources (2.2.29)
|
19
|
-
aws-sdk-core (= 2.2.29)
|
20
|
-
diff-lcs (1.2.5)
|
21
|
-
docile (1.1.5)
|
22
|
-
i18n (0.7.0)
|
23
|
-
jmespath (1.1.3)
|
24
|
-
json (1.8.3)
|
25
|
-
multi_json (1.11.2)
|
26
|
-
rake (10.5.0)
|
27
|
-
rspec (2.99.0)
|
28
|
-
rspec-core (~> 2.99.0)
|
29
|
-
rspec-expectations (~> 2.99.0)
|
30
|
-
rspec-mocks (~> 2.99.0)
|
31
|
-
rspec-core (2.99.2)
|
32
|
-
rspec-expectations (2.99.2)
|
33
|
-
diff-lcs (>= 1.1.3, < 2.0)
|
34
|
-
rspec-mocks (2.99.4)
|
35
|
-
simplecov (0.11.2)
|
36
|
-
docile (~> 1.1.0)
|
37
|
-
json (~> 1.8)
|
38
|
-
simplecov-html (~> 0.10.0)
|
39
|
-
simplecov-html (0.10.0)
|
40
|
-
|
41
|
-
PLATFORMS
|
42
|
-
ruby
|
43
|
-
|
44
|
-
DEPENDENCIES
|
45
|
-
agnostic_backend!
|
46
|
-
bundler
|
47
|
-
rake (~> 10)
|
48
|
-
rspec (~> 2)
|
49
|
-
simplecov
|
50
|
-
simplecov-html
|
51
|
-
|
52
|
-
BUNDLED WITH
|
53
|
-
1.11.2
|