second_level_cache 2.1.2 → 2.1.5
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 +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
|