cacheable_delegator 1.3.0 → 1.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/VERSION +1 -1
- data/cacheable_delegator.gemspec +2 -2
- data/lib/cacheable_delegator.rb +31 -17
- data/spec/mixin_active_record_inline_schema_spec.rb +3 -0
- data/spec/spec_records.rb +2 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
Y2E2MWQyMTY5NWZiZmU0YjJiYTMxYTY5ZWNlZTZjMmMxYzk1OGU1MA==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
NTgyMTVkZGY4NTI2ZGIxMzUwY2QyYzYzMGIwODJkMzYyYTAyNjJhOQ==
|
7
7
|
!binary "U0hBNTEy":
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
Njk5MDI5MGU4ZmRkNzc3ZTJiZjYzZDhmNzJmZDg4MGQzNjE2Yzk4MzkxMjM5
|
10
|
+
OWI3MzY2NmViZGFkMmFhMGE3NDZhMjVlYzJiYTUyZmNmNjAzM2I5OWM0ODAw
|
11
|
+
Mjg2ZDgyNGI2NDMwY2E3MTA2NDY2OTg3N2QzYmE0ZmUxN2EwZTY=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
MDg1M2E0ZTQxM2YxNTY4MmJlZWIyYzhkNTE5OTQ1OTExMGUyMTIxOTVkNmJk
|
14
|
+
ZmI4OWNkOTIwM2U0M2ViMzQwMTFlNWQ2Yzc1YjY1MzZlMTQ3MDc1OWQ1NTQ3
|
15
|
+
NjNmNzYwYjgyZWVkYzgxMDVhYWViMjBkZjg0YzZhYWYzN2UyYzk=
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.
|
1
|
+
1.4.0
|
data/cacheable_delegator.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "cacheable_delegator"
|
8
|
-
s.version = "1.
|
8
|
+
s.version = "1.4.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Dan Nguyen"]
|
12
|
-
s.date = "2013-10-
|
12
|
+
s.date = "2013-10-30"
|
13
13
|
s.description = "Create a cache model for your active records"
|
14
14
|
s.email = "dansonguyen@gmail.com"
|
15
15
|
s.extra_rdoc_files = [
|
data/lib/cacheable_delegator.rb
CHANGED
@@ -51,35 +51,49 @@ module CacheableDelegator
|
|
51
51
|
# will call ActiveRecord::Base.serialize based on parameters passed in
|
52
52
|
# from
|
53
53
|
def upgrade_schema!
|
54
|
-
# first we create a hash of source_columns
|
55
|
-
source_column_hash = source_columns.inject({}) do |shash, source_col|
|
56
|
-
source_col_atts = COL_ATTRIBUTES_TO_UPGRADE.inject({}){|hsh, att| hsh[att.to_sym] = source_col.send att; hsh }
|
57
|
-
shash[source_col.name] = source_col_atts
|
58
|
-
|
59
|
-
shash
|
60
|
-
end
|
61
|
-
|
62
54
|
# then we merge it with custom_columns
|
63
|
-
columns_to_add =
|
64
|
-
|
55
|
+
columns_to_add = generate_columns_to_upgrade(custom_columns)
|
65
56
|
|
66
57
|
# then we add them all in using .col method from active_record_inline_schema
|
67
58
|
columns_to_add.each_pair do |col_name, col_atts|
|
68
|
-
|
69
|
-
col col_name,
|
59
|
+
column_atts_without_serialized_att = col_atts.dup.tap{|h| h.delete :serialize }
|
60
|
+
col( col_name, column_atts_without_serialized_att )
|
61
|
+
end
|
62
|
+
|
63
|
+
self.auto_upgrade!( :gentle => true )
|
64
|
+
self.set_serialized_columns!
|
65
|
+
end
|
70
66
|
|
71
|
-
|
72
|
-
|
73
|
-
|
67
|
+
|
68
|
+
# a soft method that is run every time the class is loaded
|
69
|
+
# just to make sure things are properly serialized
|
70
|
+
def set_serialized_columns!
|
71
|
+
cols = generate_columns_to_upgrade(custom_columns)
|
72
|
+
cols.each_pair do |col_name, col_atts|
|
73
|
+
if is_serialize = col_atts.delete(:serialize)
|
74
|
+
## by default, the client passes in serialize: true for plain serialization
|
75
|
+
## and has the option to pass in serialize: Hash
|
76
|
+
|
74
77
|
serialize_klass = (is_serialize == true) ? Object : is_serialize
|
75
78
|
serialize col_name, serialize_klass
|
76
79
|
end
|
77
80
|
end
|
78
|
-
|
79
|
-
self.auto_upgrade!( :gentle => true )
|
80
81
|
end
|
81
82
|
|
82
83
|
|
84
|
+
def generate_columns_to_upgrade(custom_cols)
|
85
|
+
# first we create a hash of source_columns
|
86
|
+
source_column_hash = source_columns.inject({}){ |shash, source_col|
|
87
|
+
source_col_atts = COL_ATTRIBUTES_TO_UPGRADE.inject({}){|hsh, att| hsh[att.to_sym] = source_col.send att; hsh }
|
88
|
+
shash[source_col.name] = source_col_atts
|
89
|
+
|
90
|
+
shash
|
91
|
+
}
|
92
|
+
|
93
|
+
# then we merge it with custom_columns
|
94
|
+
return source_column_hash.merge(custom_cols)
|
95
|
+
end
|
96
|
+
|
83
97
|
##################### source conveniences
|
84
98
|
|
85
99
|
|
@@ -77,6 +77,9 @@ describe CacheableDelegator do
|
|
77
77
|
MyCachedRecord.add_custom_column :foo_array, serialize: Hash
|
78
78
|
MyCachedRecord.upgrade_schema!
|
79
79
|
expect{ MyCachedRecord.create_cache(@source) }.to raise_error ActiveRecord::SerializationTypeMismatch
|
80
|
+
|
81
|
+
# throwing this in there ad hoc to make sure nothing breaks...TODO fix later
|
82
|
+
MyCachedRecord.set_serialized_columns!
|
80
83
|
end
|
81
84
|
|
82
85
|
end
|
data/spec/spec_records.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cacheable_delegator
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dan Nguyen
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-10-
|
11
|
+
date: 2013-10-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: pry
|