record_cache 0.9.12 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore ADDED
@@ -0,0 +1,3 @@
1
+ Gemfile.lock
2
+ pkg
3
+ *~
data/.rbenv-gemsets ADDED
@@ -0,0 +1 @@
1
+ record_cache
data/.rbenv-version ADDED
@@ -0,0 +1 @@
1
+ ree-1.8.7-2012.02
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source "http://www.rubygems.org"
2
+
3
+ gemspec
data/README.rdoc CHANGED
@@ -24,13 +24,15 @@ direct SQL will not.
24
24
 
25
25
  == Install:
26
26
 
27
- sudo gem install record_cache -s http://gemcutter.org
27
+ gem install record_cache
28
28
 
29
29
  == Dependencies:
30
30
 
31
31
  * {after_commit}[http://github.com/freelancing-god/after_commit]
32
32
  * {memcache}[http://github.com/ninjudd/memcache]
33
33
 
34
+ RecordCache is confirmed to work with Rails 2.3.9. It does not currently work with Rails 3.
35
+
34
36
  == License:
35
37
 
36
38
  Copyright (c) 2009 Justin Balthrop, Geni.com; Published under The MIT License, see LICENSE
data/Rakefile CHANGED
@@ -1,49 +1,10 @@
1
- require 'rake'
2
1
  require 'rake/testtask'
3
- require 'rake/rdoctask'
4
-
5
- begin
6
- require 'jeweler'
7
- Jeweler::Tasks.new do |s|
8
- s.name = "record_cache"
9
- s.summary = %Q{Active Record caching and indexing in memcache. An alternative to cache_fu}
10
- s.email = "code@justinbalthrop.com"
11
- s.homepage = "http://github.com/ninjudd/record_cache"
12
- s.description = "Active Record caching and indexing in memcache"
13
- s.authors = ["Justin Balthrop"]
14
- s.add_dependency('after_commit', '>= 1.0.0')
15
- s.add_dependency('deferrable', '>= 0.1.0')
16
- s.add_dependency('memcache', '>= 1.0.0')
17
- s.add_dependency('cache_version', '>= 0.9.4')
18
- s.add_dependency('activerecord', '>= 2.0.0')
19
- end
20
- Jeweler::GemcutterTasks.new
21
- rescue LoadError
22
- puts "Jeweler not available. Install it with: sudo gem install technicalpickles-jeweler -s http://gems.github.com"
23
- end
2
+ require 'bundler/gem_tasks'
24
3
 
25
4
  Rake::TestTask.new do |t|
26
- t.libs << 'lib'
5
+ t.libs = ['lib', 'test']
27
6
  t.pattern = 'test/**/*_test.rb'
28
7
  t.verbose = false
29
8
  end
30
9
 
31
- Rake::RDocTask.new do |rdoc|
32
- rdoc.rdoc_dir = 'rdoc'
33
- rdoc.title = 'record_cache'
34
- rdoc.options << '--line-numbers' << '--inline-source'
35
- rdoc.rdoc_files.include('README*')
36
- rdoc.rdoc_files.include('lib/**/*.rb')
37
- end
38
-
39
- begin
40
- require 'rcov/rcovtask'
41
- Rcov::RcovTask.new do |t|
42
- t.libs << 'test'
43
- t.test_files = FileList['test/**/*_test.rb']
44
- t.verbose = true
45
- end
46
- rescue LoadError
47
- end
48
-
49
10
  task :default => :test
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.9.12
1
+ 1.0.0
@@ -1,3 +1,5 @@
1
+ require 'digest'
2
+
1
3
  module RecordCache
2
4
  class Index
3
5
  include Deferrable
@@ -26,6 +28,10 @@ module RecordCache
26
28
  @scope_query = opts[:scope] || {}
27
29
  end
28
30
 
31
+ def to_s
32
+ "<RecordCache::Index #{@model_class} by #{@index_field} (#{@name})>"
33
+ end
34
+
29
35
  def cache
30
36
  if RecordCache.config[:thread_safe]
31
37
  Thread.current[:record_cache] ||= @cache.clone
@@ -51,16 +57,15 @@ module RecordCache
51
57
  end
52
58
 
53
59
  def namespace
54
- "#{model_class.name}_#{model_class.version}_#{RecordCache.version}:#{name}" << ( full_record? ? '' : ":#{fields.join(',')}" )
60
+ "#{model_class.name}_#{model_class.version}_#{RecordCache.version}_#{fields_hash}:#{name}"
55
61
  end
56
62
 
57
63
  def fields_hash
58
64
  if @fields_hash.nil?
59
- if full_record?
60
- @fields_hash ||= model_class.column_names.sort.hash
61
- else
62
- @fields_hash ||= fields.collect {|field| field.to_s}.hash
63
- end
65
+ fields = full_record? ? model_class.column_names : self.fields
66
+ md5 = Digest::MD5::new
67
+ md5 << fields.sort.join(',')
68
+ @fields_hash = md5.hexdigest
64
69
  end
65
70
  @fields_hash
66
71
  end
@@ -182,7 +187,7 @@ module RecordCache
182
187
  end
183
188
 
184
189
  def invalidate_model(model)
185
- attribute = model.send(index_field)
190
+ attribute = model.read_attribute(index_field)
186
191
  attribute_was = model.attr_was(index_field)
187
192
  if scope.match_previous?(model)
188
193
  if write_ahead?
@@ -258,7 +263,6 @@ module RecordCache
258
263
  opts = {
259
264
  :expiry => expiry,
260
265
  :disable_write => model_class.record_cache_config[:disable_write],
261
- :validation => lambda {|key, record_set| record_set and record_set.fields_hash == fields_hash},
262
266
  }
263
267
  cache.get_some(keys, opts) do |keys_to_fetch|
264
268
  raise 'db access is disabled' if @@disable_db
@@ -275,7 +279,11 @@ module RecordCache
275
279
 
276
280
  db.select_all(sql).each do |record|
277
281
  key = record[index_field] || NULL
278
- fetched_records[key] << record
282
+ if fetched_records[key]
283
+ fetched_records[key] << record
284
+ else
285
+ raise "no records found in #{self} for #{key.inspect}. existing keys: #{fetched_records.keys.inspect}"
286
+ end
279
287
  end
280
288
  end
281
289
  fetched_records
@@ -378,7 +386,10 @@ module RecordCache
378
386
 
379
387
  def stringify(keys)
380
388
  keys.compact! if disallow_null?
381
- keys.collect {|key| key.nil? ? NULL : key.to_s}.uniq
389
+ keys.collect do |key|
390
+ key = key.nil? ? NULL : key.to_s
391
+ index_column.number? ? key.strip : key
392
+ end.uniq
382
393
  end
383
394
 
384
395
  def db
data/lib/record_cache.rb CHANGED
@@ -1,6 +1,6 @@
1
- require 'rubygems'
2
1
  require 'memcache'
3
2
  require 'active_record'
3
+ require 'after_commit'
4
4
  require 'cache_version'
5
5
  require 'deferrable'
6
6
 
@@ -53,7 +53,11 @@ module RecordCache
53
53
 
54
54
  def attr_was(attr)
55
55
  attr = attr.to_s
56
- ['id', 'type'].include?(attr) ? send(attr) : send(:attribute_was, attr)
56
+ if ['id', 'type'].include?(attr) or not attribute_changed?(attr)
57
+ read_attribute(attr)
58
+ else
59
+ changed_attributes[attr]
60
+ end
57
61
  end
58
62
  end
59
63
 
@@ -107,6 +111,14 @@ module RecordCache
107
111
  end
108
112
  end
109
113
 
114
+ def id_field
115
+ connection.quote_column_name(primary_key)
116
+ end
117
+
118
+ def id_column
119
+ columns_hash[primary_key]
120
+ end
121
+
110
122
  def invalidate_from_conditions(conditions, flag = nil)
111
123
  if conditions.nil?
112
124
  # Just invalidate all indexes.
@@ -116,12 +128,12 @@ module RecordCache
116
128
  end
117
129
 
118
130
  # Freeze ids to avoid race conditions.
119
- sql = "SELECT id FROM #{table_name} "
131
+ sql = "SELECT #{id_field} FROM #{table_name} "
120
132
  self.send(:add_conditions!, sql, conditions, self.send(:scope, :find))
121
133
  ids = RecordCache.db(self).select_values(sql)
122
134
 
123
135
  return if ids.empty?
124
- conditions = "id IN (#{ids.join(',')})"
136
+ conditions = "#{id_field} IN (#{ids.collect {|id| quote_value(id, id_column)}.join(',')})"
125
137
 
126
138
  if block_given?
127
139
  # Capture the ids to invalidate in lambdas.
data/record_cache.gemspec CHANGED
@@ -1,66 +1,30 @@
1
- # Generated by jeweler
2
- # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
- # -*- encoding: utf-8 -*-
1
+ lib = File.expand_path('../lib', __FILE__)
2
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
3
 
6
- Gem::Specification.new do |s|
7
- s.name = %q{record_cache}
8
- s.version = "0.9.12"
4
+ Gem::Specification.new do |gem|
5
+ gem.name = "record_cache"
6
+ gem.version = IO.read('VERSION')
7
+ gem.authors = ["Justin Balthrop"]
8
+ gem.email = ["git@justinbalthrop.com"]
9
+ gem.description = %q{Active Record caching and indexing in memcache.}
10
+ gem.summary = gem.description
11
+ gem.homepage = "https://github.com/ninjudd/record_cache"
9
12
 
10
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = ["Justin Balthrop"]
12
- s.date = %q{2011-03-21}
13
- s.description = %q{Active Record caching and indexing in memcache}
14
- s.email = %q{code@justinbalthrop.com}
15
- s.extra_rdoc_files = [
16
- "LICENSE",
17
- "README.rdoc"
18
- ]
19
- s.files = [
20
- "LICENSE",
21
- "README.rdoc",
22
- "Rakefile",
23
- "VERSION",
24
- "lib/record_cache.rb",
25
- "lib/record_cache/index.rb",
26
- "lib/record_cache/scope.rb",
27
- "lib/record_cache/set.rb",
28
- "record_cache.gemspec",
29
- "test/record_cache_test.rb",
30
- "test/test_helper.rb"
31
- ]
32
- s.homepage = %q{http://github.com/ninjudd/record_cache}
33
- s.require_paths = ["lib"]
34
- s.rubygems_version = %q{1.3.7}
35
- s.summary = %q{Active Record caching and indexing in memcache. An alternative to cache_fu}
36
- s.test_files = [
37
- "test/record_cache_test.rb",
38
- "test/test_helper.rb"
39
- ]
13
+ gem.add_development_dependency 'shoulda', '3.0.1'
14
+ gem.add_development_dependency 'mocha'
15
+ gem.add_development_dependency 'rsolr'
16
+ gem.add_development_dependency 'json'
17
+ gem.add_development_dependency 'rake'
18
+ gem.add_development_dependency 'activerecord-postgresql-adapter'
40
19
 
41
- if s.respond_to? :specification_version then
42
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
43
- s.specification_version = 3
20
+ gem.add_dependency 'after_commit', '>= 1.0.0'
21
+ gem.add_dependency 'deferrable', '>= 0.1.0'
22
+ gem.add_dependency 'memcache', '>= 1.0.0'
23
+ gem.add_dependency 'cache_version', '>= 0.9.4'
24
+ gem.add_dependency 'activerecord', '~> 2.3.9'
44
25
 
45
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
46
- s.add_runtime_dependency(%q<after_commit>, [">= 1.0.0"])
47
- s.add_runtime_dependency(%q<deferrable>, [">= 0.1.0"])
48
- s.add_runtime_dependency(%q<memcache>, [">= 1.0.0"])
49
- s.add_runtime_dependency(%q<cache_version>, [">= 0.9.4"])
50
- s.add_runtime_dependency(%q<activerecord>, [">= 2.0.0"])
51
- else
52
- s.add_dependency(%q<after_commit>, [">= 1.0.0"])
53
- s.add_dependency(%q<deferrable>, [">= 0.1.0"])
54
- s.add_dependency(%q<memcache>, [">= 1.0.0"])
55
- s.add_dependency(%q<cache_version>, [">= 0.9.4"])
56
- s.add_dependency(%q<activerecord>, [">= 2.0.0"])
57
- end
58
- else
59
- s.add_dependency(%q<after_commit>, [">= 1.0.0"])
60
- s.add_dependency(%q<deferrable>, [">= 0.1.0"])
61
- s.add_dependency(%q<memcache>, [">= 1.0.0"])
62
- s.add_dependency(%q<cache_version>, [">= 0.9.4"])
63
- s.add_dependency(%q<activerecord>, [">= 2.0.0"])
64
- end
26
+ gem.files = `git ls-files`.split($/)
27
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
28
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
29
+ gem.require_paths = ["lib"]
65
30
  end
66
-
@@ -1,8 +1,8 @@
1
- require File.dirname(__FILE__) + '/test_helper.rb'
1
+ require 'test_helper'
2
2
 
3
3
  RecordCache::Set.source_tracking = true
4
4
 
5
- class CreateTables < ActiveRecord::Migration
5
+ class CreateTables < ActiveRecord::Migration
6
6
  def self.up
7
7
  down
8
8
  create_table :pets do |t|
@@ -64,14 +64,19 @@ class RecordCacheTest < Test::Unit::TestCase
64
64
  CreateTables.up
65
65
  CacheVersionMigration.up
66
66
  end
67
-
67
+
68
68
  teardown do
69
69
  system('killall memcached')
70
70
  CreateTables.down
71
71
  CacheVersionMigration.down
72
72
  RecordCache::Index.enable_db
73
73
  end
74
-
74
+
75
+ should 'find_by_id with space' do
76
+ dog = Dog.create(:name => 'Frankie')
77
+ assert Pet.find_by_id("#{dog.id} ")
78
+ end
79
+
75
80
  should 'create field lookup functions' do
76
81
  dog = Breed.new(:name => 'pitbull retriever')
77
82
  cat = Breed.new(:name => 'house cat')
@@ -79,16 +84,16 @@ class RecordCacheTest < Test::Unit::TestCase
79
84
  daisy = Dog.create(:name => 'Daisy', :breed => dog)
80
85
 
81
86
  expected = {dog.id => daisy.id, cat.id => willy.id}
82
- assert_equal expected, Pet.id_by_breed_id([dog.id, cat.id, 100, 101])
87
+ assert_equal expected, Pet.id_by_breed_id([dog.id, cat.id, 100, 101])
83
88
  end
84
-
89
+
85
90
  should 'return cached values without accessing the database' do
86
91
  color = Color.new(:name => 'black & white')
87
92
  dog = Breed.new(:name => 'pitbull retriever')
88
93
  cat = Breed.new(:name => 'house cat')
89
94
  daisy = Dog.create(:name => 'Daisy', :color => color, :breed => dog)
90
95
  willy = Cat.create(:name => 'Willy', :color => color, :breed => cat)
91
-
96
+
92
97
  Pet.find(daisy.id, willy.id)
93
98
  Dog.find_all_by_color_id(color.id)
94
99
  Dog.find_all_by_breed_id(dog.id)
@@ -121,7 +126,7 @@ class RecordCacheTest < Test::Unit::TestCase
121
126
  breed2 = Breed.new(:name => 'pitbull terrier')
122
127
  daisy = Dog.create(:name => 'Daisy', :color => color1, :breed => breed1)
123
128
  sammy = Dog.create(:name => 'Sammy', :color => color1, :breed => breed2)
124
-
129
+
125
130
  Dog.find(daisy.id, sammy.id)
126
131
  Dog.find_all_by_color_id(color1.id)
127
132
  Dog.find_all_by_breed_id([breed1.id, breed2.id])
@@ -152,7 +157,7 @@ class RecordCacheTest < Test::Unit::TestCase
152
157
  should 'create raw find methods' do
153
158
  daisy = Dog.create(:name => 'Daisy')
154
159
  sammy = Dog.create(:name => 'Sammy')
155
-
160
+
156
161
  Dog.find(daisy.id, sammy.id)
157
162
  RecordCache::Index.disable_db
158
163
 
@@ -166,7 +171,7 @@ class RecordCacheTest < Test::Unit::TestCase
166
171
  breed2 = Breed.new(:name => 'pitbull terrier')
167
172
  daisy = Dog.create(:name => 'Daisy', :color => color, :breed => breed1, :sex => 'f')
168
173
  sammy = Dog.create(:name => 'Sammy', :color => color, :breed => breed2, :sex => 'm')
169
-
174
+
170
175
  assert_equal [sammy], Dog.find_all_male_by_color_id(color.id)
171
176
  assert_equal [daisy], Dog.find_all_female_by_color_id(color.id)
172
177
  assert_equal [daisy, sammy], Dog.find_all_colors(color.id)
@@ -184,22 +189,22 @@ class RecordCacheTest < Test::Unit::TestCase
184
189
  end
185
190
  assert_equal 6, count
186
191
  end
187
-
192
+
188
193
  should 'invalidate indexes on save' do
189
194
  b_w = Color.new(:name => 'black & white')
190
195
  brown = Color.new(:name => 'brown')
191
196
  breed = Breed.new(:name => 'mutt')
192
197
  daisy = Dog.create(:name => 'Daisy', :color => b_w, :breed => breed, :sex => 'f')
193
-
198
+
194
199
  assert_equal daisy, Dog.find_by_color_id(b_w.id)
195
-
200
+
196
201
  daisy.name = 'Molly'
197
202
  daisy.color = brown
198
203
  daisy.save
199
-
204
+
200
205
  assert_equal 'Molly', daisy.name
201
206
  assert_equal brown.id, daisy.color_id
202
-
207
+
203
208
  assert_equal daisy, Dog.find_by_color_id(brown.id)
204
209
  assert_equal nil, Dog.find_by_color_id(b_w.id)
205
210
  end
data/test/test_helper.rb CHANGED
@@ -1,20 +1,11 @@
1
1
  require 'test/unit'
2
2
  require 'rubygems'
3
3
  require 'shoulda'
4
- require 'mocha'
4
+ require 'mocha/setup'
5
5
  require 'pp'
6
6
 
7
- $LOAD_PATH.unshift File.dirname(__FILE__) + "/../lib"
8
- ['cache_version', 'model_set', 'memcache', 'deferrable'].each do |dir|
9
- $LOAD_PATH.unshift File.dirname(__FILE__) + "/../../#{dir}/lib"
10
- end
11
-
12
7
  require 'record_cache'
13
8
 
14
- ['lib/after_commit', 'lib/after_commit/active_record', 'lib/after_commit/connection_adapters', 'init'].each do |file|
15
- require File.dirname(__FILE__) + "/../../after_commit/#{file}"
16
- end
17
-
18
9
  class Test::Unit::TestCase
19
10
  end
20
11
 
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: record_cache
3
3
  version: !ruby/object:Gem::Version
4
- hash: 35
5
- prerelease: false
4
+ hash: 23
5
+ prerelease:
6
6
  segments:
7
+ - 1
8
+ - 0
7
9
  - 0
8
- - 9
9
- - 12
10
- version: 0.9.12
10
+ version: 1.0.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Justin Balthrop
@@ -15,13 +15,99 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-03-21 00:00:00 -07:00
18
+ date: 2013-06-03 00:00:00 -07:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
22
- name: after_commit
22
+ name: shoulda
23
23
  prerelease: false
24
24
  requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - "="
28
+ - !ruby/object:Gem::Version
29
+ hash: 5
30
+ segments:
31
+ - 3
32
+ - 0
33
+ - 1
34
+ version: 3.0.1
35
+ type: :development
36
+ version_requirements: *id001
37
+ - !ruby/object:Gem::Dependency
38
+ name: mocha
39
+ prerelease: false
40
+ requirement: &id002 !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ">="
44
+ - !ruby/object:Gem::Version
45
+ hash: 3
46
+ segments:
47
+ - 0
48
+ version: "0"
49
+ type: :development
50
+ version_requirements: *id002
51
+ - !ruby/object:Gem::Dependency
52
+ name: rsolr
53
+ prerelease: false
54
+ requirement: &id003 !ruby/object:Gem::Requirement
55
+ none: false
56
+ requirements:
57
+ - - ">="
58
+ - !ruby/object:Gem::Version
59
+ hash: 3
60
+ segments:
61
+ - 0
62
+ version: "0"
63
+ type: :development
64
+ version_requirements: *id003
65
+ - !ruby/object:Gem::Dependency
66
+ name: json
67
+ prerelease: false
68
+ requirement: &id004 !ruby/object:Gem::Requirement
69
+ none: false
70
+ requirements:
71
+ - - ">="
72
+ - !ruby/object:Gem::Version
73
+ hash: 3
74
+ segments:
75
+ - 0
76
+ version: "0"
77
+ type: :development
78
+ version_requirements: *id004
79
+ - !ruby/object:Gem::Dependency
80
+ name: rake
81
+ prerelease: false
82
+ requirement: &id005 !ruby/object:Gem::Requirement
83
+ none: false
84
+ requirements:
85
+ - - ">="
86
+ - !ruby/object:Gem::Version
87
+ hash: 3
88
+ segments:
89
+ - 0
90
+ version: "0"
91
+ type: :development
92
+ version_requirements: *id005
93
+ - !ruby/object:Gem::Dependency
94
+ name: activerecord-postgresql-adapter
95
+ prerelease: false
96
+ requirement: &id006 !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ">="
100
+ - !ruby/object:Gem::Version
101
+ hash: 3
102
+ segments:
103
+ - 0
104
+ version: "0"
105
+ type: :development
106
+ version_requirements: *id006
107
+ - !ruby/object:Gem::Dependency
108
+ name: after_commit
109
+ prerelease: false
110
+ requirement: &id007 !ruby/object:Gem::Requirement
25
111
  none: false
26
112
  requirements:
27
113
  - - ">="
@@ -33,11 +119,11 @@ dependencies:
33
119
  - 0
34
120
  version: 1.0.0
35
121
  type: :runtime
36
- version_requirements: *id001
122
+ version_requirements: *id007
37
123
  - !ruby/object:Gem::Dependency
38
124
  name: deferrable
39
125
  prerelease: false
40
- requirement: &id002 !ruby/object:Gem::Requirement
126
+ requirement: &id008 !ruby/object:Gem::Requirement
41
127
  none: false
42
128
  requirements:
43
129
  - - ">="
@@ -49,11 +135,11 @@ dependencies:
49
135
  - 0
50
136
  version: 0.1.0
51
137
  type: :runtime
52
- version_requirements: *id002
138
+ version_requirements: *id008
53
139
  - !ruby/object:Gem::Dependency
54
140
  name: memcache
55
141
  prerelease: false
56
- requirement: &id003 !ruby/object:Gem::Requirement
142
+ requirement: &id009 !ruby/object:Gem::Requirement
57
143
  none: false
58
144
  requirements:
59
145
  - - ">="
@@ -65,11 +151,11 @@ dependencies:
65
151
  - 0
66
152
  version: 1.0.0
67
153
  type: :runtime
68
- version_requirements: *id003
154
+ version_requirements: *id009
69
155
  - !ruby/object:Gem::Dependency
70
156
  name: cache_version
71
157
  prerelease: false
72
- requirement: &id004 !ruby/object:Gem::Requirement
158
+ requirement: &id010 !ruby/object:Gem::Requirement
73
159
  none: false
74
160
  requirements:
75
161
  - - ">="
@@ -81,33 +167,37 @@ dependencies:
81
167
  - 4
82
168
  version: 0.9.4
83
169
  type: :runtime
84
- version_requirements: *id004
170
+ version_requirements: *id010
85
171
  - !ruby/object:Gem::Dependency
86
172
  name: activerecord
87
173
  prerelease: false
88
- requirement: &id005 !ruby/object:Gem::Requirement
174
+ requirement: &id011 !ruby/object:Gem::Requirement
89
175
  none: false
90
176
  requirements:
91
- - - ">="
177
+ - - ~>
92
178
  - !ruby/object:Gem::Version
93
- hash: 15
179
+ hash: 17
94
180
  segments:
95
181
  - 2
96
- - 0
97
- - 0
98
- version: 2.0.0
182
+ - 3
183
+ - 9
184
+ version: 2.3.9
99
185
  type: :runtime
100
- version_requirements: *id005
101
- description: Active Record caching and indexing in memcache
102
- email: code@justinbalthrop.com
186
+ version_requirements: *id011
187
+ description: Active Record caching and indexing in memcache.
188
+ email:
189
+ - git@justinbalthrop.com
103
190
  executables: []
104
191
 
105
192
  extensions: []
106
193
 
107
- extra_rdoc_files:
108
- - LICENSE
109
- - README.rdoc
194
+ extra_rdoc_files: []
195
+
110
196
  files:
197
+ - .gitignore
198
+ - .rbenv-gemsets
199
+ - .rbenv-version
200
+ - Gemfile
111
201
  - LICENSE
112
202
  - README.rdoc
113
203
  - Rakefile
@@ -120,7 +210,7 @@ files:
120
210
  - test/record_cache_test.rb
121
211
  - test/test_helper.rb
122
212
  has_rdoc: true
123
- homepage: http://github.com/ninjudd/record_cache
213
+ homepage: https://github.com/ninjudd/record_cache
124
214
  licenses: []
125
215
 
126
216
  post_install_message:
@@ -149,10 +239,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
149
239
  requirements: []
150
240
 
151
241
  rubyforge_project:
152
- rubygems_version: 1.3.7
242
+ rubygems_version: 1.5.2
153
243
  signing_key:
154
244
  specification_version: 3
155
- summary: Active Record caching and indexing in memcache. An alternative to cache_fu
245
+ summary: Active Record caching and indexing in memcache.
156
246
  test_files:
157
247
  - test/record_cache_test.rb
158
248
  - test/test_helper.rb