second_level_cache 1.6.2 → 2.0.0.beta

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.
data/CHANGELOG.md CHANGED
@@ -1,50 +1,55 @@
1
- 1.2.0
1
+ 1.6.2
2
2
  -----
3
- * [clear cache after update_counters](https://github.com/csdn-dev/second_level_cache/commit/240dde81199124092e0e8ad0500c167ac146e301)
3
+ * [can disable/enable fetch_by_uinq_key method]
4
+ * [Fix Bug: serialized attribute columns marshal issue #11]
4
5
 
5
- 1.2.1
6
+ 1.6.1
6
7
  -----
7
- * [fix polymorphic association bug]
8
+ * [Fix bug: undefined method `select_all_column?' for []:ActiveRecord::Relation] by sishen
8
9
 
9
- 1.3.0
10
+ 1.6.0
10
11
  -----
11
- * [clean cache after touch]
12
+ * [write through cache]
13
+ * [disable SecondLevelCache for spicial model]
14
+ * [only cache `SELECT *` query]
12
15
 
13
- 1.3.1
16
+ 1.5.1
14
17
  -----
15
- * [clean cache after update_column/increment!/decrement!]
18
+ * [use new marshal machanism to avoid clear assocation cache manually]
16
19
 
17
- 1.3.2
20
+ 1.5.0
18
21
  -----
19
- * [fix has one assciation issue]
22
+ * [add cache version to quick clear cache for special model]
23
+
24
+ 1.4.1
25
+ -----
26
+ * [fix errors when belongs_to association return nil]
20
27
 
21
28
  1.4.0
22
29
  -----
23
30
  * [cache has one assciation]
24
31
 
25
- 1.4.1
32
+ 1.3.2
26
33
  -----
27
- * [fix errors when belongs_to association return nil]
34
+ * [fix has one assciation issue]
28
35
 
29
- 1.5.0
36
+ 1.3.1
30
37
  -----
31
- * [add cache version to quick clear cache for special model]
38
+ * [clean cache after update_column/increment!/decrement!]
32
39
 
33
- 1.5.1
40
+ 1.3.0
34
41
  -----
35
- * [use new marshal machanism to avoid clear assocation cache manually]
42
+ * [clean cache after touch]
36
43
 
37
- 1.6.0
44
+ 1.2.1
38
45
  -----
39
- * [write through cache]
40
- * [disable SecondLevelCache for spicial model]
41
- * [only cache `SELECT *` query]
46
+ * [fix polymorphic association bug]
42
47
 
43
- 1.6.1
48
+ 1.2.0
44
49
  -----
45
- * [Fix bug: undefined method `select_all_column?' for []:ActiveRecord::Relation] by sishen
50
+ * [clear cache after update_counters](https://github.com/csdn-dev/second_level_cache/commit/240dde81199124092e0e8ad0500c167ac146e301)
51
+
52
+
53
+
54
+
46
55
 
47
- 1.6.2
48
- -----
49
- * [can disable/enable fetch_by_uinq_key method]
50
- * [Fix Bug: serialized attribute columns marshal issue #11]
data/Gemfile CHANGED
@@ -1,4 +1,4 @@
1
- source 'http://rubygems.org'
1
+ source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in second_level_cache.gemspec
4
4
  gemspec
data/README.md CHANGED
@@ -1,11 +1,11 @@
1
1
  # SecondLevelCache
2
2
 
3
3
  [![Gem Version](https://badge.fury.io/rb/second_level_cache.png)](http://badge.fury.io/rb/second_level_cache)
4
- [![Dependency Status](https://gemnasium.com/csdn-dev/second_level_cache.png)](https://gemnasium.com/csdn-dev/second_level_cache)
5
- [![Build Status](https://travis-ci.org/csdn-dev/second_level_cache.png?branch=master)](https://travis-ci.org/csdn-dev/second_level_cache)
6
- [![Code Climate](https://codeclimate.com/github/csdn-dev/second_level_cache.png)](https://codeclimate.com/github/csdn-dev/second_level_cache)
4
+ [![Dependency Status](https://gemnasium.com/hooopo/second_level_cache.png)](https://gemnasium.com/hooopo/second_level_cache)
5
+ [![Build Status](https://travis-ci.org/hooopo/second_level_cache.png?branch=master)](https://travis-ci.org/hooopo/second_level_cache)
6
+ [![Code Climate](https://codeclimate.com/github/hooopo/second_level_cache.png)](https://codeclimate.com/github/hooopo/second_level_cache)
7
7
 
8
- SecondLevelCache is a write-through and read-through caching library inspired by Cache Money and cache_fu, support only Rails3 and ActiveRecord.
8
+ SecondLevelCache is a write-through and read-through caching library inspired by Cache Money and cache_fu, support ActiveRecord 4.
9
9
 
10
10
  Read-Through: Queries by ID, like `current_user.articles.find(params[:id])`, will first look in cache store and then look in the database for the results of that query. If there is a cache miss, it will populate the cache.
11
11
 
@@ -17,7 +17,7 @@ Write-Through: As objects are created, updated, and deleted, all of the caches a
17
17
  In your gem file:
18
18
 
19
19
  ```ruby
20
- gem "second_level_cache", "~> 1.5"
20
+ gem "second_level_cache", "~> 2.0.0"
21
21
  ```
22
22
 
23
23
  ## Usage
@@ -34,9 +34,6 @@ Then it will fetch cached object in this situations:
34
34
 
35
35
  ```ruby
36
36
  User.find(1)
37
- User.find_by_id(1)
38
- User.find_by_id!(1)
39
- User.find_by_id_and_name(1, "Hooopo")
40
37
  User.where(:status => 1).find_by_id(1)
41
38
  user.articles.find_by_id(1)
42
39
  user.articles.find(1)
@@ -143,23 +140,3 @@ user = User.fetch_by_uniq_key!("hooopo", :nick_name) # this will raise `ActiveRe
143
140
  ## License
144
141
 
145
142
  MIT License
146
-
147
- Permission is hereby granted, free of charge, to any person obtaining
148
- a copy of this software and associated documentation files (the
149
- "Software"), to deal in the Software without restriction, including
150
- without limitation the rights to use, copy, modify, merge, publish,
151
- distribute, sublicense, and/or sell copies of the Software, and to
152
- permit persons to whom the Software is furnished to do so, subject to
153
- the following conditions:
154
-
155
- The above copyright notice and this permission notice shall be
156
- included in all copies or substantial portions of the Software.
157
-
158
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
159
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
160
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
161
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
162
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
163
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
164
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
165
-
@@ -4,8 +4,8 @@ module SecondLevelCache
4
4
  module FetchByUniqKey
5
5
  def fetch_by_uniq_key(value, uniq_key_name)
6
6
  return self.where(uniq_key_name => value).first unless self.second_level_cache_enabled?
7
- if iid = SecondLevelCache.cache_store.read(cache_uniq_key(value, uniq_key_name))
8
- self.find_by_id(iid)
7
+ if _id = SecondLevelCache.cache_store.read(cache_uniq_key(value, uniq_key_name))
8
+ self.find_by_id(_id)
9
9
  else
10
10
  record = self.where(uniq_key_name => value).first
11
11
  record.tap{|record| SecondLevelCache.cache_store.write(cache_uniq_key(value, uniq_key_name), record.id)} if record
@@ -9,11 +9,11 @@ module SecondLevelCache
9
9
  included do
10
10
  class_eval do
11
11
  alias_method_chain :find_one, :second_level_cache
12
- alias_method_chain :find_by_attributes, :second_level_cache
13
12
  end
14
13
  end
15
14
 
16
- # TODO fetch multi ids
15
+ # TODO find_some
16
+ # https://github.com/rails/rails/blob/master/activerecord/lib/active_record/relation/finder_methods.rb#L289-L309
17
17
  #
18
18
  # Cacheable:
19
19
  #
@@ -28,56 +28,28 @@ module SecondLevelCache
28
28
  def find_one_with_second_level_cache(id)
29
29
  return find_one_without_second_level_cache(id) unless second_level_cache_enabled?
30
30
  return find_one_without_second_level_cache(id) unless select_all_column?
31
-
31
+
32
32
  id = id.id if ActiveRecord::Base === id
33
- if ::ActiveRecord::IdentityMap.enabled? && cachable? && record = from_identity_map(id)
34
- return record
35
- end
36
33
 
37
34
  if cachable?
38
- return record if record = @klass.read_second_level_cache(id)
35
+ if record = @klass.read_second_level_cache(id)
36
+ return record
37
+ end
39
38
  end
40
-
39
+
41
40
  if cachable_without_conditions?
42
41
  if record = @klass.read_second_level_cache(id)
43
42
  return record if where_match_with_cache?(where_values, record)
44
43
  end
45
44
  end
46
-
45
+
47
46
  record = find_one_without_second_level_cache(id)
48
47
  record.write_second_level_cache
49
48
  record
50
49
  end
51
50
 
52
- # TODO cache find_or_create_by_id
53
- def find_by_attributes_with_second_level_cache(match, attributes, *args)
54
- return find_by_attributes_without_second_level_cache(match, attributes, *args) unless second_level_cache_enabled?
55
- return find_by_attributes_without_second_level_cache(match, attributes, *args) unless select_all_column?
56
-
57
- conditions = Hash[attributes.map {|a| [a, args[attributes.index(a)]]}]
58
-
59
- if conditions.has_key?("id")
60
- result = wrap_bang(match.bang?) do
61
- if conditions.size == 1
62
- find_one_with_second_level_cache(conditions["id"])
63
- else
64
- where(conditions.except("id")).find_one_with_second_level_cache(conditions["id"])
65
- end
66
- end
67
- yield(result) if block_given? #edge rails do this bug rails3.1.0 not
68
-
69
- return result
70
- end
71
-
72
- find_by_attributes_without_second_level_cache(match, attributes, *args)
73
- end
74
-
75
51
  private
76
52
 
77
- def wrap_bang(bang)
78
- bang ? yield : (yield rescue nil)
79
- end
80
-
81
53
  def cachable?
82
54
  where_values.blank? &&
83
55
  limit_one? && order_values.blank? &&
@@ -106,10 +78,6 @@ module SecondLevelCache
106
78
  def select_all_column?
107
79
  select_values.blank?
108
80
  end
109
-
110
- def from_identity_map(id)
111
- ::ActiveRecord::IdentityMap.get(@klass, id)
112
- end
113
81
  end
114
82
  end
115
83
  end
@@ -0,0 +1,46 @@
1
+ # -*- encoding : utf-8 -*-
2
+ module SecondLevelCache
3
+ module ActiveRecord
4
+ module Associations
5
+ class Preloader
6
+ module Association
7
+ extend ActiveSupport::Concern
8
+
9
+ included do
10
+ class_eval do
11
+ alias_method_chain :records_for, :second_level_cache
12
+ end
13
+ end
14
+
15
+ def records_for_with_second_level_cache(ids)
16
+ return records_for_without_second_level_cache(ids) unless klass.second_level_cache_enabled?
17
+
18
+ map_cache_keys = ids.map{|id| klass.second_level_cache_key(id)}
19
+ records_from_cache = ::SecondLevelCache.cache_store.read_multi(*map_cache_keys)
20
+
21
+ # NOTICE
22
+ # Rails.cache.read_multi return hash that has keys only hitted.
23
+ # eg. Rails.cache.read_multi(1,2,3) => {2 => hit_value, 3 => hit_value}
24
+ hitted_ids = records_from_cache.map{|key, _| key.split("/")[2]}
25
+ missed_ids = ids - hitted_ids
26
+
27
+ ::SecondLevelCache::Config.logger.info "missed ids -> #{missed_ids.inspect} | hitted ids -> #{hitted_ids.inspect}"
28
+
29
+ if missed_ids.empty?
30
+ RecordMarshal.load_multi(records_from_cache.values)
31
+ else
32
+ records_from_db = records_for_without_second_level_cache(missed_ids)
33
+ records_from_db.map{|record| write_cache(record); record} + RecordMarshal.load_multi(records_from_cache.values)
34
+ end
35
+ end
36
+
37
+ private
38
+
39
+ def write_cache(record)
40
+ record.write_second_level_cache
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
@@ -5,11 +5,13 @@ require 'second_level_cache/active_record/finder_methods'
5
5
  require 'second_level_cache/active_record/persistence'
6
6
  require 'second_level_cache/active_record/belongs_to_association'
7
7
  require 'second_level_cache/active_record/has_one_association'
8
+ require 'second_level_cache/active_record/preloader'
8
9
 
9
10
  ActiveRecord::Base.send(:include, SecondLevelCache::Mixin)
10
11
  ActiveRecord::Base.send(:include, SecondLevelCache::ActiveRecord::Base)
11
12
  ActiveRecord::Base.send(:extend, SecondLevelCache::ActiveRecord::FetchByUniqKey)
12
- ActiveRecord::Relation.send(:include, SecondLevelCache::ActiveRecord::FinderMethods)
13
+
13
14
  ActiveRecord::Base.send(:include, SecondLevelCache::ActiveRecord::Persistence)
14
15
  ActiveRecord::Associations::BelongsToAssociation.send(:include, SecondLevelCache::ActiveRecord::Associations::BelongsToAssociation)
15
16
  ActiveRecord::Associations::HasOneAssociation.send(:include, SecondLevelCache::ActiveRecord::Associations::HasOneAssociation)
17
+ ActiveRecord::Associations::Preloader::Association.send(:include, SecondLevelCache::ActiveRecord::Associations::Preloader::Association)
@@ -23,5 +23,9 @@ module RecordMarshal
23
23
  record.init_with('attributes' => serialized[1])
24
24
  record
25
25
  end
26
+
27
+ def load_multi(serializeds)
28
+ serializeds.map{|serialized| load(serialized)}
29
+ end
26
30
  end
27
31
  end
@@ -1,4 +1,4 @@
1
1
  # -*- encoding : utf-8 -*-
2
2
  module SecondLevelCache
3
- VERSION = "1.6.2"
3
+ VERSION = "2.0.0.beta"
4
4
  end
@@ -23,6 +23,7 @@ module SecondLevelCache
23
23
  @second_level_cache_options = options
24
24
  @second_level_cache_options[:expires_in] ||= 1.week
25
25
  @second_level_cache_options[:version] ||= 0
26
+ relation.class.send :include, SecondLevelCache::ActiveRecord::FinderMethods
26
27
  end
27
28
 
28
29
  def second_level_cache_enabled?
@@ -4,9 +4,9 @@ lib = File.expand_path('../lib', __FILE__)
4
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
5
 
6
6
  Gem::Specification.new do |gem|
7
- gem.authors = ["wangxz"]
8
- gem.email = ["wangxz@csdn.net"]
9
- gem.description = %q{Write Through and Read Through caching library inspired by CacheMoney and cache_fu, support only Rails3 and ActiveRecord.}
7
+ gem.authors = ["Hooopo"]
8
+ gem.email = ["hoooopo@gmail.com"]
9
+ gem.description = %q{Write Through and Read Through caching library inspired by CacheMoney and cache_fu, support ActiveRecord 4.}
10
10
  gem.summary = <<-SUMMARY
11
11
  SecondLevelCache is a write-through and read-through caching library inspired by Cache Money and cache_fu, support only Rails3 and ActiveRecord.
12
12
 
@@ -21,7 +21,6 @@ Gem::Specification.new do |gem|
21
21
  "README.md",
22
22
  "Rakefile",
23
23
  "Gemfile",
24
- "init.rb",
25
24
  "CHANGELOG.md",
26
25
  "second_level_cache.gemspec"
27
26
  ]
@@ -31,9 +30,10 @@ Gem::Specification.new do |gem|
31
30
  gem.require_paths = ["lib"]
32
31
  gem.version = SecondLevelCache::VERSION
33
32
 
34
- gem.add_runtime_dependency "activesupport", ["~> 3.2.0"]
33
+ gem.add_runtime_dependency "activesupport", ["~> 4.0.0.beta1"]
35
34
 
36
- gem.add_development_dependency "activerecord", ["~> 3.2.0"]
35
+ gem.add_development_dependency "activerecord", ["~> 4.0.0.beta1"]
37
36
  gem.add_development_dependency "sqlite3"
38
37
  gem.add_development_dependency "rake"
38
+ gem.add_development_dependency "database_cleaner", "~> 1.0.0.RC1"
39
39
  end
@@ -0,0 +1,28 @@
1
+ # -*- encoding : utf-8 -*-
2
+ require 'active_record/test_helper'
3
+
4
+ class ActiveRecord::PreloaderTest < Test::Unit::TestCase
5
+ def setup
6
+ DatabaseCleaner[:active_record].start
7
+ @topic1 = Topic.create :title => "title1", :body => "body1"
8
+ @topic2 = Topic.create :title => "title2", :body => "body2"
9
+ @topic3 = Topic.create :title => "title3", :body => "body3"
10
+ @post1 = @topic1.posts.create :body => "post1"
11
+ @post2 = @topic2.posts.create :body => "post2"
12
+ @post3 = @topic3.posts.create :body => "post3"
13
+ end
14
+
15
+ def test_preload_work_properly
16
+ results = Post.includes(:topic).order("id ASC").to_a
17
+ assert_equal results.size, 3
18
+ assert_equal results.first.topic, @topic1
19
+ end
20
+
21
+ def test_when_read_multi_missed_from_cache_AR_will_fetch_missed_records_from_db
22
+ @topic1.expire_second_level_cache
23
+ results = Post.includes(:topic).order("id ASC").to_a
24
+ assert_equal results.size, 3
25
+ assert_equal results.first.topic, @topic1
26
+ assert_match /IN\s+\(#{@topic1.id}\)/m, $sql_logger
27
+ end
28
+ end
@@ -24,7 +24,20 @@ class Test::Unit::TestCase
24
24
  end
25
25
 
26
26
  def teardown
27
- User.delete_all
27
+ $sql_logger = nil
28
+ DatabaseCleaner[:active_record].clean
29
+ end
30
+ end
31
+
32
+ module ActiveRecord
33
+ module Querying
34
+ def find_by_sql_with_test(sql, binds = [])
35
+ $sql_logger ||= ""
36
+ $sql_logger << sql.to_sql
37
+ $sql_logger << "\n"
38
+ find_by_sql_without_test(sql, binds)
39
+ end
40
+ alias_method_chain :find_by_sql, :test
28
41
  end
29
42
  end
30
43
 
data/test/require_test.rb CHANGED
@@ -1,3 +1,4 @@
1
+ # -*- encoding : utf-8 -*-
1
2
  require 'test_helper'
2
3
  require 'active_record'
3
4
 
data/test/test_helper.rb CHANGED
@@ -3,6 +3,9 @@ require 'rubygems'
3
3
  require 'bundler/setup'
4
4
  require 'second_level_cache'
5
5
  require 'test/unit'
6
+ require 'database_cleaner'
7
+
8
+ DatabaseCleaner[:active_record].strategy = :transaction
6
9
 
7
10
  SecondLevelCache.configure do |config|
8
11
  config.cache_store = ActiveSupport::Cache::MemoryStore.new
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: second_level_cache
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.6.2
5
- prerelease:
4
+ version: 2.0.0.beta
5
+ prerelease: 6
6
6
  platform: ruby
7
7
  authors:
8
- - wangxz
8
+ - Hooopo
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-04-16 00:00:00.000000000 Z
12
+ date: 2013-04-24 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport
@@ -18,7 +18,7 @@ dependencies:
18
18
  requirements:
19
19
  - - ~>
20
20
  - !ruby/object:Gem::Version
21
- version: 3.2.0
21
+ version: 4.0.0.beta1
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
@@ -26,7 +26,7 @@ dependencies:
26
26
  requirements:
27
27
  - - ~>
28
28
  - !ruby/object:Gem::Version
29
- version: 3.2.0
29
+ version: 4.0.0.beta1
30
30
  - !ruby/object:Gem::Dependency
31
31
  name: activerecord
32
32
  requirement: !ruby/object:Gem::Requirement
@@ -34,7 +34,7 @@ dependencies:
34
34
  requirements:
35
35
  - - ~>
36
36
  - !ruby/object:Gem::Version
37
- version: 3.2.0
37
+ version: 4.0.0.beta1
38
38
  type: :development
39
39
  prerelease: false
40
40
  version_requirements: !ruby/object:Gem::Requirement
@@ -42,7 +42,7 @@ dependencies:
42
42
  requirements:
43
43
  - - ~>
44
44
  - !ruby/object:Gem::Version
45
- version: 3.2.0
45
+ version: 4.0.0.beta1
46
46
  - !ruby/object:Gem::Dependency
47
47
  name: sqlite3
48
48
  requirement: !ruby/object:Gem::Requirement
@@ -75,46 +75,63 @@ dependencies:
75
75
  - - ! '>='
76
76
  - !ruby/object:Gem::Version
77
77
  version: '0'
78
+ - !ruby/object:Gem::Dependency
79
+ name: database_cleaner
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ~>
84
+ - !ruby/object:Gem::Version
85
+ version: 1.0.0.RC1
86
+ type: :development
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ~>
92
+ - !ruby/object:Gem::Version
93
+ version: 1.0.0.RC1
78
94
  description: Write Through and Read Through caching library inspired by CacheMoney
79
- and cache_fu, support only Rails3 and ActiveRecord.
95
+ and cache_fu, support ActiveRecord 4.
80
96
  email:
81
- - wangxz@csdn.net
97
+ - hoooopo@gmail.com
82
98
  executables: []
83
99
  extensions: []
84
100
  extra_rdoc_files: []
85
101
  files:
86
- - lib/second_level_cache.rb
87
- - lib/second_level_cache/config.rb
88
- - lib/second_level_cache/active_record.rb
89
- - lib/second_level_cache/active_record/fetch_by_uniq_key.rb
90
- - lib/second_level_cache/active_record/persistence.rb
91
102
  - lib/second_level_cache/active_record/base.rb
92
- - lib/second_level_cache/active_record/finder_methods.rb
93
103
  - lib/second_level_cache/active_record/belongs_to_association.rb
104
+ - lib/second_level_cache/active_record/fetch_by_uniq_key.rb
105
+ - lib/second_level_cache/active_record/finder_methods.rb
94
106
  - lib/second_level_cache/active_record/has_one_association.rb
107
+ - lib/second_level_cache/active_record/persistence.rb
108
+ - lib/second_level_cache/active_record/preloader.rb
109
+ - lib/second_level_cache/active_record.rb
110
+ - lib/second_level_cache/arel/wheres.rb
111
+ - lib/second_level_cache/config.rb
95
112
  - lib/second_level_cache/record_marshal.rb
96
113
  - lib/second_level_cache/version.rb
97
- - lib/second_level_cache/arel/wheres.rb
114
+ - lib/second_level_cache.rb
98
115
  - README.md
99
116
  - Rakefile
100
117
  - Gemfile
101
- - init.rb
102
118
  - CHANGELOG.md
103
119
  - second_level_cache.gemspec
104
- - test/require_test.rb
105
- - test/active_record/finder_methods_test.rb
106
- - test/active_record/belongs_to_association_test.rb
107
120
  - test/active_record/base_test.rb
108
- - test/active_record/persistence_test.rb
109
- - test/active_record/test_helper.rb
110
- - test/active_record/polymorphic_association_test.rb
121
+ - test/active_record/belongs_to_association_test.rb
122
+ - test/active_record/finder_methods_test.rb
123
+ - test/active_record/model/book.rb
111
124
  - test/active_record/model/image.rb
112
125
  - test/active_record/model/post.rb
113
- - test/active_record/model/book.rb
114
- - test/active_record/model/user.rb
115
126
  - test/active_record/model/topic.rb
127
+ - test/active_record/model/user.rb
128
+ - test/active_record/persistence_test.rb
129
+ - test/active_record/polymorphic_association_test.rb
130
+ - test/active_record/preloader_test.rb
116
131
  - test/active_record/second_level_cache_test.rb
132
+ - test/active_record/test_helper.rb
117
133
  - test/record_marshal_test.rb
134
+ - test/require_test.rb
118
135
  - test/test_helper.rb
119
136
  homepage: https://github.com/csdn-dev/second_level_cache
120
137
  licenses: []
@@ -131,12 +148,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
131
148
  required_rubygems_version: !ruby/object:Gem::Requirement
132
149
  none: false
133
150
  requirements:
134
- - - ! '>='
151
+ - - ! '>'
135
152
  - !ruby/object:Gem::Version
136
- version: '0'
153
+ version: 1.3.1
137
154
  requirements: []
138
155
  rubyforge_project:
139
- rubygems_version: 1.8.24
156
+ rubygems_version: 1.8.25
140
157
  signing_key:
141
158
  specification_version: 3
142
159
  summary: ! 'SecondLevelCache is a write-through and read-through caching library inspired
@@ -146,19 +163,19 @@ summary: ! 'SecondLevelCache is a write-through and read-through caching library
146
163
  is a cache miss, it will populate the cache. Write-Through: As objects are created,
147
164
  updated, and deleted, all of the caches are automatically kept up-to-date and coherent.'
148
165
  test_files:
149
- - test/require_test.rb
150
- - test/active_record/finder_methods_test.rb
151
- - test/active_record/belongs_to_association_test.rb
152
166
  - test/active_record/base_test.rb
153
- - test/active_record/persistence_test.rb
154
- - test/active_record/test_helper.rb
155
- - test/active_record/polymorphic_association_test.rb
167
+ - test/active_record/belongs_to_association_test.rb
168
+ - test/active_record/finder_methods_test.rb
169
+ - test/active_record/model/book.rb
156
170
  - test/active_record/model/image.rb
157
171
  - test/active_record/model/post.rb
158
- - test/active_record/model/book.rb
159
- - test/active_record/model/user.rb
160
172
  - test/active_record/model/topic.rb
173
+ - test/active_record/model/user.rb
174
+ - test/active_record/persistence_test.rb
175
+ - test/active_record/polymorphic_association_test.rb
176
+ - test/active_record/preloader_test.rb
161
177
  - test/active_record/second_level_cache_test.rb
178
+ - test/active_record/test_helper.rb
162
179
  - test/record_marshal_test.rb
180
+ - test/require_test.rb
163
181
  - test/test_helper.rb
164
- has_rdoc:
data/init.rb DELETED
@@ -1,2 +0,0 @@
1
- # -*- encoding : utf-8 -*-
2
- require File.expand_path("../lib/second_level_cache", __FILE__)