infopark_cloud_connector 6.8.0.beta.200.681.7c84f4a → 6.8.0.beta.200.713.e5c3150
Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,51 @@
|
|
1
|
+
module RailsConnector
|
2
|
+
|
3
|
+
class DictStorage #:nodoc: all
|
4
|
+
|
5
|
+
class << self
|
6
|
+
|
7
|
+
def configure(config)
|
8
|
+
@config = config.present? ? config.symbolize_keys : {}
|
9
|
+
end
|
10
|
+
|
11
|
+
def get(spec)
|
12
|
+
storage.get(spec)
|
13
|
+
end
|
14
|
+
|
15
|
+
private
|
16
|
+
|
17
|
+
attr_reader :config
|
18
|
+
|
19
|
+
def storage
|
20
|
+
@storage ||=
|
21
|
+
case config[:type]
|
22
|
+
when "s3"
|
23
|
+
s3_storage(config)
|
24
|
+
when "file"
|
25
|
+
file_storage(config)
|
26
|
+
else
|
27
|
+
raise "Unsupported dict storage type #{config[:type]}"
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def s3_storage(config)
|
32
|
+
bucket = AWS::S3.new(config).buckets[config[:bucket_name]]
|
33
|
+
Kvom::Storage::S3Storage.new({
|
34
|
+
:bucket => bucket,
|
35
|
+
:bucket_prefix => "dict",
|
36
|
+
:cache => s3_storage_cache,
|
37
|
+
:cache_prefix => "dict.",
|
38
|
+
})
|
39
|
+
end
|
40
|
+
|
41
|
+
def s3_storage_cache
|
42
|
+
Rails.cache
|
43
|
+
end
|
44
|
+
|
45
|
+
def file_storage(config)
|
46
|
+
Kvom::Storage::FileSystemStorage.new(config)
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
data/lib/rails_connector/obj.rb
CHANGED
@@ -520,29 +520,35 @@ module RailsConnector
|
|
520
520
|
private
|
521
521
|
|
522
522
|
def update_data(values = {}, meta = {})
|
523
|
-
@values = values
|
523
|
+
@values = values || {}
|
524
|
+
meta ||= {}
|
524
525
|
@attributes = meta["attributes"] || {}
|
526
|
+
@ext_ref = meta["ext_ref"]
|
525
527
|
@attr_cache = {}
|
526
528
|
end
|
527
529
|
|
528
530
|
def read_attribute(name)
|
529
531
|
name = name.to_s
|
532
|
+
@attr_cache[name] ||= attribute_value_from_raw_attribute_value(name)
|
533
|
+
end
|
534
|
+
|
535
|
+
def attribute_value_from_raw_attribute_value(name)
|
530
536
|
raw = read_raw_attribute_value(name)
|
531
|
-
|
532
|
-
|
533
|
-
|
534
|
-
|
535
|
-
|
536
|
-
|
537
|
-
|
538
|
-
|
539
|
-
|
540
|
-
|
541
|
-
else
|
542
|
-
LinkList.new(raw)
|
543
|
-
end
|
537
|
+
case type_of(name)
|
538
|
+
when :markdown
|
539
|
+
StringTagging.tag_as_markdown(raw, self)
|
540
|
+
when :html
|
541
|
+
StringTagging.tag_as_html(raw, self)
|
542
|
+
when :date
|
543
|
+
DateAttribute.parse raw if raw
|
544
|
+
when :linklist
|
545
|
+
if name == "_text_links"
|
546
|
+
LinkList.new(raw && raw.values)
|
544
547
|
else
|
545
|
-
raw
|
548
|
+
LinkList.new(raw)
|
549
|
+
end
|
550
|
+
else
|
551
|
+
raw
|
546
552
|
end
|
547
553
|
end
|
548
554
|
|
@@ -618,9 +624,21 @@ module RailsConnector
|
|
618
624
|
end
|
619
625
|
|
620
626
|
def read_raw_attribute_value(attribute_name)
|
627
|
+
return @values[attribute_name] if @values.key?(attribute_name)
|
628
|
+
if @ext_ref && (attribute_name == "_text_links" || ?_ != attribute_name[0])
|
629
|
+
extend_values_with_dict_storage_values
|
630
|
+
end
|
621
631
|
@values[attribute_name]
|
622
632
|
end
|
623
633
|
|
634
|
+
def extend_values_with_dict_storage_values
|
635
|
+
# may raise Kvom::Storage::NotFound
|
636
|
+
values = DictStorage.get(@ext_ref)
|
637
|
+
@values.reverse_merge!(values)
|
638
|
+
@ext_ref = nil
|
639
|
+
@values
|
640
|
+
end
|
641
|
+
|
624
642
|
class << self
|
625
643
|
private
|
626
644
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: infopark_cloud_connector
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 2363298151
|
5
5
|
prerelease: 6
|
6
6
|
segments:
|
7
7
|
- 6
|
@@ -9,14 +9,12 @@ version: !ruby/object:Gem::Version
|
|
9
9
|
- 0
|
10
10
|
- beta
|
11
11
|
- 200
|
12
|
-
-
|
13
|
-
-
|
12
|
+
- 713
|
13
|
+
- e
|
14
|
+
- 5
|
14
15
|
- c
|
15
|
-
-
|
16
|
-
|
17
|
-
- 4
|
18
|
-
- a
|
19
|
-
version: 6.8.0.beta.200.681.7c84f4a
|
16
|
+
- 3150
|
17
|
+
version: 6.8.0.beta.200.713.e5c3150
|
20
18
|
platform: ruby
|
21
19
|
authors:
|
22
20
|
- Infopark AG
|
@@ -24,7 +22,7 @@ autorequire:
|
|
24
22
|
bindir: bin
|
25
23
|
cert_chain: []
|
26
24
|
|
27
|
-
date: 2012-06-
|
25
|
+
date: 2012-06-29 00:00:00 +02:00
|
28
26
|
default_executable:
|
29
27
|
dependencies:
|
30
28
|
- !ruby/object:Gem::Dependency
|
@@ -65,21 +63,19 @@ dependencies:
|
|
65
63
|
requirements:
|
66
64
|
- - "="
|
67
65
|
- !ruby/object:Gem::Version
|
68
|
-
hash:
|
66
|
+
hash: 2363298151
|
69
67
|
segments:
|
70
68
|
- 6
|
71
69
|
- 8
|
72
70
|
- 0
|
73
71
|
- beta
|
74
72
|
- 200
|
75
|
-
-
|
76
|
-
-
|
73
|
+
- 713
|
74
|
+
- e
|
75
|
+
- 5
|
77
76
|
- c
|
78
|
-
-
|
79
|
-
|
80
|
-
- 4
|
81
|
-
- a
|
82
|
-
version: 6.8.0.beta.200.681.7c84f4a
|
77
|
+
- 3150
|
78
|
+
version: 6.8.0.beta.200.713.e5c3150
|
83
79
|
version_requirements: *id003
|
84
80
|
name: kvom
|
85
81
|
prerelease: false
|
@@ -106,6 +102,7 @@ files:
|
|
106
102
|
- lib/rails_connector/couchdb_views_source_path.rb
|
107
103
|
- lib/rails_connector/date_attribute.rb
|
108
104
|
- lib/rails_connector/default_search_request.rb
|
105
|
+
- lib/rails_connector/dict_storage.rb
|
109
106
|
- lib/rails_connector/elasticsearch_request.rb
|
110
107
|
- lib/rails_connector/errors.rb
|
111
108
|
- lib/rails_connector/link.rb
|