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 +3 -0
- data/.rbenv-gemsets +1 -0
- data/.rbenv-version +1 -0
- data/Gemfile +3 -0
- data/README.rdoc +3 -1
- data/Rakefile +2 -41
- data/VERSION +1 -1
- data/lib/record_cache/index.rb +21 -10
- data/lib/record_cache.rb +16 -4
- data/record_cache.gemspec +25 -61
- data/test/record_cache_test.rb +20 -15
- data/test/test_helper.rb +1 -10
- metadata +119 -29
data/.gitignore
ADDED
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
data/README.rdoc
CHANGED
@@ -24,13 +24,15 @@ direct SQL will not.
|
|
24
24
|
|
25
25
|
== Install:
|
26
26
|
|
27
|
-
|
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 '
|
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
|
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.
|
1
|
+
1.0.0
|
data/lib/record_cache/index.rb
CHANGED
@@ -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}
|
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
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
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.
|
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]
|
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
|
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)
|
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
|
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 = "
|
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
|
-
|
2
|
-
|
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 |
|
7
|
-
|
8
|
-
|
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
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
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
|
-
|
42
|
-
|
43
|
-
|
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
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
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
|
-
|
data/test/record_cache_test.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
|
-
require
|
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:
|
5
|
-
prerelease:
|
4
|
+
hash: 23
|
5
|
+
prerelease:
|
6
6
|
segments:
|
7
|
+
- 1
|
8
|
+
- 0
|
7
9
|
- 0
|
8
|
-
|
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:
|
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:
|
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: *
|
122
|
+
version_requirements: *id007
|
37
123
|
- !ruby/object:Gem::Dependency
|
38
124
|
name: deferrable
|
39
125
|
prerelease: false
|
40
|
-
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: *
|
138
|
+
version_requirements: *id008
|
53
139
|
- !ruby/object:Gem::Dependency
|
54
140
|
name: memcache
|
55
141
|
prerelease: false
|
56
|
-
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: *
|
154
|
+
version_requirements: *id009
|
69
155
|
- !ruby/object:Gem::Dependency
|
70
156
|
name: cache_version
|
71
157
|
prerelease: false
|
72
|
-
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: *
|
170
|
+
version_requirements: *id010
|
85
171
|
- !ruby/object:Gem::Dependency
|
86
172
|
name: activerecord
|
87
173
|
prerelease: false
|
88
|
-
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:
|
179
|
+
hash: 17
|
94
180
|
segments:
|
95
181
|
- 2
|
96
|
-
-
|
97
|
-
-
|
98
|
-
version: 2.
|
182
|
+
- 3
|
183
|
+
- 9
|
184
|
+
version: 2.3.9
|
99
185
|
type: :runtime
|
100
|
-
version_requirements: *
|
101
|
-
description: Active Record caching and indexing in memcache
|
102
|
-
email:
|
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
|
-
|
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:
|
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.
|
242
|
+
rubygems_version: 1.5.2
|
153
243
|
signing_key:
|
154
244
|
specification_version: 3
|
155
|
-
summary: Active Record caching and indexing in memcache.
|
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
|