second_level_cache 2.3.3 → 2.4.0
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 +5 -5
- data/CHANGELOG.md +29 -22
- data/Gemfile +4 -2
- data/README.md +7 -1
- data/Rakefile +6 -4
- data/lib/second_level_cache.rb +7 -5
- data/lib/second_level_cache/active_record.rb +15 -10
- data/lib/second_level_cache/active_record/base.rb +2 -0
- data/lib/second_level_cache/active_record/belongs_to_association.rb +2 -0
- data/lib/second_level_cache/active_record/core.rb +2 -0
- data/lib/second_level_cache/active_record/fetch_by_uniq_key.rb +5 -3
- data/lib/second_level_cache/active_record/finder_methods.rb +3 -1
- data/lib/second_level_cache/active_record/has_one_association.rb +2 -0
- data/lib/second_level_cache/active_record/persistence.rb +2 -0
- data/lib/second_level_cache/active_record/preloader.rb +7 -4
- data/lib/second_level_cache/config.rb +3 -1
- data/lib/second_level_cache/mixin.rb +3 -1
- data/lib/second_level_cache/record_marshal.rb +2 -0
- data/lib/second_level_cache/record_relation.rb +2 -0
- data/lib/second_level_cache/version.rb +1 -1
- data/second_level_cache.gemspec +4 -4
- data/test/active_record_test_case_helper.rb +7 -5
- data/test/base_test.rb +6 -4
- data/test/belongs_to_association_test.rb +4 -2
- data/test/enum_attr_test.rb +6 -4
- data/test/fetch_by_uniq_key_test.rb +15 -13
- data/test/finder_methods_test.rb +6 -4
- data/test/has_one_association_test.rb +10 -8
- data/test/model/account.rb +2 -0
- data/test/model/animal.rb +2 -0
- data/test/model/book.rb +2 -0
- data/test/model/image.rb +2 -0
- data/test/model/order.rb +2 -0
- data/test/model/order_item.rb +2 -0
- data/test/model/post.rb +2 -0
- data/test/model/topic.rb +2 -0
- data/test/model/user.rb +6 -4
- data/test/persistence_test.rb +12 -10
- data/test/polymorphic_association_test.rb +4 -2
- data/test/preloader_non_integer_test.rb +17 -14
- data/test/preloader_test.rb +13 -10
- data/test/record_marshal_test.rb +17 -15
- data/test/require_test.rb +7 -5
- data/test/second_level_cache_test.rb +5 -3
- data/test/single_table_inheritance_test.rb +3 -1
- data/test/test_helper.rb +19 -17
- metadata +19 -19
data/test/record_marshal_test.rb
CHANGED
@@ -1,19 +1,21 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "test_helper"
|
2
4
|
|
3
5
|
class RecordMarshalTest < ActiveSupport::TestCase
|
4
6
|
def setup
|
5
|
-
if ::ActiveRecord::VERSION::STRING >=
|
6
|
-
@json_options = {
|
7
|
-
@extras = {
|
8
|
-
@user = User.create name:
|
9
|
-
email:
|
7
|
+
if ::ActiveRecord::VERSION::STRING >= "4.1.0"
|
8
|
+
@json_options = { "name" => "Test", "age" => 18, "hash" => { "name" => "dup" } }
|
9
|
+
@extras = { "tagline" => "Hello world", "gender" => 1 }
|
10
|
+
@user = User.create name: "csdn",
|
11
|
+
email: "test@csdn.com",
|
10
12
|
options: [1, 2],
|
11
13
|
extras: @extras,
|
12
14
|
json_options: @json_options,
|
13
15
|
status: :active
|
14
16
|
else
|
15
|
-
@user = User.create name:
|
16
|
-
email:
|
17
|
+
@user = User.create name: "csdn",
|
18
|
+
email: "test@csdn.com",
|
17
19
|
extras: @extras,
|
18
20
|
options: [1, 2]
|
19
21
|
end
|
@@ -22,7 +24,7 @@ class RecordMarshalTest < ActiveSupport::TestCase
|
|
22
24
|
def test_should_dump_active_record_object
|
23
25
|
dumped = RecordMarshal.dump(@user)
|
24
26
|
assert dumped.is_a?(Array)
|
25
|
-
assert_equal
|
27
|
+
assert_equal "User", dumped[0]
|
26
28
|
assert_equal @user.attributes, dumped[1]
|
27
29
|
end
|
28
30
|
|
@@ -34,11 +36,11 @@ class RecordMarshalTest < ActiveSupport::TestCase
|
|
34
36
|
assert_equal User.read_second_level_cache(@user.id).changed?, false
|
35
37
|
assert_equal [1, 2], User.read_second_level_cache(@user.id).options
|
36
38
|
assert_equal @extras, User.read_second_level_cache(@user.id).extras
|
37
|
-
assert_equal
|
39
|
+
assert_equal "Hello world", User.read_second_level_cache(@user.id).tagline
|
38
40
|
assert_equal 1, User.read_second_level_cache(@user.id).gender
|
39
|
-
if ::ActiveRecord::VERSION::STRING >=
|
41
|
+
if ::ActiveRecord::VERSION::STRING >= "4.1.0"
|
40
42
|
result = User.read_second_level_cache(@user.id)
|
41
|
-
assert_equal @json_options[
|
43
|
+
assert_equal @json_options["name"], result.json_options["name"]
|
42
44
|
assert_equal @json_options, result.json_options
|
43
45
|
end
|
44
46
|
assert User.read_second_level_cache(@user.id).persisted?
|
@@ -52,13 +54,13 @@ class RecordMarshalTest < ActiveSupport::TestCase
|
|
52
54
|
def test_should_load_active_record_object_without_association_cache
|
53
55
|
@user.books
|
54
56
|
@user.write_second_level_cache
|
55
|
-
assert_equal false, User.read_second_level_cache(@user.id).association_cached?(
|
57
|
+
assert_equal false, User.read_second_level_cache(@user.id).association_cached?("id")
|
56
58
|
end
|
57
59
|
|
58
60
|
def test_should_thread_safe_load
|
59
61
|
user = User.find @user.id
|
60
|
-
assert_equal
|
62
|
+
assert_equal "active", user.status
|
61
63
|
user = User.find @user.id
|
62
|
-
assert_equal
|
64
|
+
assert_equal "active", user.status
|
63
65
|
end
|
64
66
|
end
|
data/test/require_test.rb
CHANGED
@@ -1,11 +1,13 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "test_helper"
|
4
|
+
require "active_record"
|
3
5
|
|
4
6
|
class RequireTest < ActiveSupport::TestCase
|
5
7
|
def setup
|
6
|
-
ActiveRecord::Relation.new(nil, nil, nil)
|
7
|
-
require
|
8
|
-
@user = User.create name:
|
8
|
+
ActiveRecord::Relation.new(nil, table: nil, predicate_builder: nil)
|
9
|
+
require "test_helper"
|
10
|
+
@user = User.create name: "Dingding Ye", email: "yedingding@gmail.com"
|
9
11
|
end
|
10
12
|
|
11
13
|
def test_should_find_the_user
|
@@ -1,12 +1,14 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "test_helper"
|
2
4
|
|
3
5
|
class SecondLevelCacheTest < ActiveSupport::TestCase
|
4
6
|
def setup
|
5
|
-
@user = User.create name:
|
7
|
+
@user = User.create name: "csdn", email: "test@csdn.com"
|
6
8
|
end
|
7
9
|
|
8
10
|
def test_should_get_cache_key
|
9
|
-
attr_list = User.attribute_types.map { |name, type| "#{name}: #{type.type}" } *
|
11
|
+
attr_list = User.attribute_types.map { |name, type| "#{name}: #{type.type}" } * ", "
|
10
12
|
table_digest = Digest::MD5.hexdigest(attr_list)
|
11
13
|
refute_nil table_digest
|
12
14
|
assert_equal "slc/users/#{@user.id}/#{User::CACHE_VERSION}/#{table_digest}", @user.second_level_cache_key
|
data/test/test_helper.rb
CHANGED
@@ -1,27 +1,29 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
require
|
4
|
-
require
|
5
|
-
require
|
6
|
-
require
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "bundler/setup"
|
4
|
+
require "minitest/autorun"
|
5
|
+
require "active_support/test_case"
|
6
|
+
require "active_record_test_case_helper"
|
7
|
+
require "database_cleaner"
|
8
|
+
require "active_record"
|
7
9
|
|
8
10
|
ActiveSupport.test_order = :sorted if ActiveSupport.respond_to?(:test_order=)
|
9
11
|
# Force hook :active_record on_load event to make sure loader can work.
|
10
12
|
ActiveSupport.run_load_hooks(:active_record, ActiveRecord::Base)
|
11
13
|
|
12
|
-
require
|
14
|
+
require "second_level_cache"
|
13
15
|
|
14
|
-
ActiveRecord::Base.establish_connection(adapter:
|
16
|
+
ActiveRecord::Base.establish_connection(adapter: "sqlite3", database: ":memory:")
|
15
17
|
|
16
|
-
require
|
17
|
-
require
|
18
|
-
require
|
19
|
-
require
|
20
|
-
require
|
21
|
-
require
|
22
|
-
require
|
23
|
-
require
|
24
|
-
require
|
18
|
+
require "model/user"
|
19
|
+
require "model/book"
|
20
|
+
require "model/image"
|
21
|
+
require "model/topic"
|
22
|
+
require "model/post"
|
23
|
+
require "model/order"
|
24
|
+
require "model/order_item"
|
25
|
+
require "model/account"
|
26
|
+
require "model/animal"
|
25
27
|
|
26
28
|
DatabaseCleaner[:active_record].strategy = :truncation
|
27
29
|
|
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.
|
4
|
+
version: 2.4.0
|
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: 2018-02-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -16,40 +16,40 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 5.0.
|
19
|
+
version: 5.2.0.rc
|
20
20
|
- - "<"
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version: '
|
22
|
+
version: '6'
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
26
26
|
requirements:
|
27
27
|
- - ">="
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
version: 5.0.
|
29
|
+
version: 5.2.0.rc
|
30
30
|
- - "<"
|
31
31
|
- !ruby/object:Gem::Version
|
32
|
-
version: '
|
32
|
+
version: '6'
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
34
|
name: activerecord
|
35
35
|
requirement: !ruby/object:Gem::Requirement
|
36
36
|
requirements:
|
37
37
|
- - ">="
|
38
38
|
- !ruby/object:Gem::Version
|
39
|
-
version: 5.0.
|
39
|
+
version: 5.2.0.rc
|
40
40
|
- - "<"
|
41
41
|
- !ruby/object:Gem::Version
|
42
|
-
version: '
|
42
|
+
version: '6'
|
43
43
|
type: :runtime
|
44
44
|
prerelease: false
|
45
45
|
version_requirements: !ruby/object:Gem::Requirement
|
46
46
|
requirements:
|
47
47
|
- - ">="
|
48
48
|
- !ruby/object:Gem::Version
|
49
|
-
version: 5.0.
|
49
|
+
version: 5.2.0.rc
|
50
50
|
- - "<"
|
51
51
|
- !ruby/object:Gem::Version
|
52
|
-
version: '
|
52
|
+
version: '6'
|
53
53
|
- !ruby/object:Gem::Dependency
|
54
54
|
name: sqlite3
|
55
55
|
requirement: !ruby/object:Gem::Requirement
|
@@ -96,30 +96,30 @@ dependencies:
|
|
96
96
|
name: database_cleaner
|
97
97
|
requirement: !ruby/object:Gem::Requirement
|
98
98
|
requirements:
|
99
|
-
- - "
|
99
|
+
- - ">="
|
100
100
|
- !ruby/object:Gem::Version
|
101
|
-
version:
|
101
|
+
version: '0'
|
102
102
|
type: :development
|
103
103
|
prerelease: false
|
104
104
|
version_requirements: !ruby/object:Gem::Requirement
|
105
105
|
requirements:
|
106
|
-
- - "
|
106
|
+
- - ">="
|
107
107
|
- !ruby/object:Gem::Version
|
108
|
-
version:
|
108
|
+
version: '0'
|
109
109
|
- !ruby/object:Gem::Dependency
|
110
110
|
name: rubocop
|
111
111
|
requirement: !ruby/object:Gem::Requirement
|
112
112
|
requirements:
|
113
|
-
- - "
|
113
|
+
- - "~>"
|
114
114
|
- !ruby/object:Gem::Version
|
115
|
-
version:
|
115
|
+
version: 0.52.0
|
116
116
|
type: :development
|
117
117
|
prerelease: false
|
118
118
|
version_requirements: !ruby/object:Gem::Requirement
|
119
119
|
requirements:
|
120
|
-
- - "
|
120
|
+
- - "~>"
|
121
121
|
- !ruby/object:Gem::Version
|
122
|
-
version:
|
122
|
+
version: 0.52.0
|
123
123
|
description: Write Through and Read Through caching library inspired by CacheMoney
|
124
124
|
and cache_fu, support ActiveRecord 4.
|
125
125
|
email:
|
@@ -192,7 +192,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
192
192
|
version: '0'
|
193
193
|
requirements: []
|
194
194
|
rubyforge_project:
|
195
|
-
rubygems_version: 2.
|
195
|
+
rubygems_version: 2.7.3
|
196
196
|
signing_key:
|
197
197
|
specification_version: 4
|
198
198
|
summary: 'SecondLevelCache is a write-through and read-through caching library inspired
|