second_level_cache 2.1.2 → 2.1.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/lib/second_level_cache/active_record/fetch_by_uniq_key.rb +1 -1
- data/lib/second_level_cache/record_marshal.rb +18 -1
- data/lib/second_level_cache/version.rb +1 -1
- data/second_level_cache.gemspec +1 -0
- data/test/fetch_by_uniq_key_test.rb +1 -0
- data/test/record_marshal_test.rb +6 -1
- metadata +17 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f9098d3b53d06dba76eac46bf8ff1cfd425264b3
|
4
|
+
data.tar.gz: 77d704ad5801a62ef5724a0b27f9d29622c1c1af
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d7f1f0d957c2fa492acf8ece6fd84c119f655ddfa3b5312c77b66ea03b58f88c47bfd3799ffc64a8375fdca7d8af87fcfaab2996038a3325850f4bace189d5cd
|
7
|
+
data.tar.gz: 0bff288d367e69dccd31a9fff26563965750cdbd755fbd1032c4e8e3b8eb5387a21ddf1267a7a6b486017af78a492b7fc5f0dff0caedf627435980e28ec701a1
|
data/README.md
CHANGED
@@ -30,7 +30,7 @@ module SecondLevelCache
|
|
30
30
|
|
31
31
|
def cache_uniq_key(where_values)
|
32
32
|
ext_key = where_values.collect { |k,v|
|
33
|
-
v = Digest::MD5.hexdigest(v) if v.size >= 32
|
33
|
+
v = Digest::MD5.hexdigest(v) if v && v.size >= 32
|
34
34
|
[k,v].join("_")
|
35
35
|
}.join(",")
|
36
36
|
"uniq_key_#{self.name}_#{ext_key}"
|
@@ -19,7 +19,24 @@ module RecordMarshal
|
|
19
19
|
# load a cached record
|
20
20
|
def load(serialized)
|
21
21
|
return unless serialized
|
22
|
-
|
22
|
+
#fix issues 19
|
23
|
+
#fix 2.1.2 object.changed? ActiveRecord::SerializationTypeMismatch: Attribute was supposed to be a Hash, but was a String. -- "{:a=>\"t\", :b=>\"x\"}"
|
24
|
+
#fix 2.1.4 object.changed? is true
|
25
|
+
#fix Rails 4.2 is deprecating `serialized_attributes` without replacement to Rails 5 is deprecating `serialized_attributes` without replacement
|
26
|
+
klass, attributes = serialized[0].constantize, serialized[1]
|
27
|
+
if ::ActiveRecord::VERSION::STRING < '4.2.0'
|
28
|
+
klass.serialized_attributes.each do |k, v|
|
29
|
+
next if attributes[k].nil? || attributes[k].is_a?(String)
|
30
|
+
attributes[k] = attributes[k].serialized_value if attributes[k].respond_to?(:unserialize)
|
31
|
+
end
|
32
|
+
else
|
33
|
+
klass.columns.select{|t| t.cast_type.is_a?(::ActiveRecord::Type::Serialized) }.each do |c|
|
34
|
+
name, coder = c.name, c.cast_type.coder
|
35
|
+
next if attributes[name].nil? || attributes[name].is_a?(String)
|
36
|
+
attributes[name] = coder.dump(attributes[name]) if attributes[name].is_a?(coder.object_class)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
klass.instantiate(attributes)
|
23
40
|
end
|
24
41
|
|
25
42
|
def load_multi(serializeds)
|
data/second_level_cache.gemspec
CHANGED
@@ -35,5 +35,6 @@ Gem::Specification.new do |gem|
|
|
35
35
|
gem.add_runtime_dependency "activerecord", ["> 4.0.0", "< 5.0"]
|
36
36
|
gem.add_development_dependency "sqlite3"
|
37
37
|
gem.add_development_dependency "rake"
|
38
|
+
gem.add_development_dependency 'pry'
|
38
39
|
gem.add_development_dependency "database_cleaner", "~> 1.3.0"
|
39
40
|
end
|
@@ -10,6 +10,7 @@ class FetchByUinqKeyTest < ActiveSupport::TestCase
|
|
10
10
|
def test_cache_uniq_key
|
11
11
|
assert_equal User.send(:cache_uniq_key, { :name => "hooopo" } ), "uniq_key_User_name_hooopo"
|
12
12
|
assert_equal User.send(:cache_uniq_key, { :foo => 1, :bar => 2 } ), "uniq_key_User_foo_1,bar_2"
|
13
|
+
assert_equal User.send(:cache_uniq_key, { :foo => 1, :bar => nil } ), "uniq_key_User_foo_1,bar_"
|
13
14
|
long_val = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
14
15
|
assert_equal User.send(:cache_uniq_key, { :foo => 1, :bar => long_val } ), "uniq_key_User_foo_1,bar_#{Digest::MD5.hexdigest(long_val)}"
|
15
16
|
end
|
data/test/record_marshal_test.rb
CHANGED
@@ -3,7 +3,7 @@ require 'test_helper'
|
|
3
3
|
|
4
4
|
class RecordMarshalTest < ActiveSupport::TestCase
|
5
5
|
def setup
|
6
|
-
@user = User.create :name => 'csdn', :email => 'test@csdn.com'
|
6
|
+
@user = User.create :name => 'csdn', :email => 'test@csdn.com', :options => [1,2]
|
7
7
|
end
|
8
8
|
|
9
9
|
def test_should_dump_active_record_object
|
@@ -17,6 +17,11 @@ class RecordMarshalTest < ActiveSupport::TestCase
|
|
17
17
|
def test_should_load_active_record_object
|
18
18
|
@user.write_second_level_cache
|
19
19
|
assert_equal @user, User.read_second_level_cache(@user.id)
|
20
|
+
assert_equal Array, User.read_second_level_cache(@user.id).options.class
|
21
|
+
assert_equal Array, User.read_second_level_cache(@user.id).reload.options.class
|
22
|
+
assert_equal User.read_second_level_cache(@user.id).changed?, false
|
23
|
+
assert_equal [1,2], User.read_second_level_cache(@user.id).options
|
24
|
+
assert User.read_second_level_cache(@user.id).persisted?
|
20
25
|
end
|
21
26
|
|
22
27
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: second_level_cache
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.1.
|
4
|
+
version: 2.1.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Hooopo
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-07-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -78,6 +78,20 @@ dependencies:
|
|
78
78
|
- - ">="
|
79
79
|
- !ruby/object:Gem::Version
|
80
80
|
version: '0'
|
81
|
+
- !ruby/object:Gem::Dependency
|
82
|
+
name: pry
|
83
|
+
requirement: !ruby/object:Gem::Requirement
|
84
|
+
requirements:
|
85
|
+
- - ">="
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
version: '0'
|
88
|
+
type: :development
|
89
|
+
prerelease: false
|
90
|
+
version_requirements: !ruby/object:Gem::Requirement
|
91
|
+
requirements:
|
92
|
+
- - ">="
|
93
|
+
- !ruby/object:Gem::Version
|
94
|
+
version: '0'
|
81
95
|
- !ruby/object:Gem::Dependency
|
82
96
|
name: database_cleaner
|
83
97
|
requirement: !ruby/object:Gem::Requirement
|
@@ -158,7 +172,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
158
172
|
version: '0'
|
159
173
|
requirements: []
|
160
174
|
rubyforge_project:
|
161
|
-
rubygems_version: 2.
|
175
|
+
rubygems_version: 2.4.7
|
162
176
|
signing_key:
|
163
177
|
specification_version: 4
|
164
178
|
summary: 'SecondLevelCache is a write-through and read-through caching library inspired
|