record_cache 0.9.12 → 1.0.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.
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