generation_cacheable 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.
- checksums.yaml +7 -0
- data/.gitignore +4 -0
- data/.rspec +2 -0
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/ChangeLog +2 -0
- data/Gemfile +16 -0
- data/README.md +33 -0
- data/Rakefile +8 -0
- data/generation_cacheable.gemspec +23 -0
- data/lib/gen_cache.rb +32 -0
- data/lib/gen_cache/cache_io/fetching.rb +78 -0
- data/lib/gen_cache/cache_io/formatting.rb +75 -0
- data/lib/gen_cache/cache_io/parsing.rb +66 -0
- data/lib/gen_cache/cache_types/association_cache.rb +50 -0
- data/lib/gen_cache/cache_types/attribute_cache.rb +30 -0
- data/lib/gen_cache/cache_types/class_method_cache.rb +23 -0
- data/lib/gen_cache/cache_types/key_cache.rb +14 -0
- data/lib/gen_cache/cache_types/method_cache.rb +28 -0
- data/lib/gen_cache/caches.rb +15 -0
- data/lib/gen_cache/expiry.rb +37 -0
- data/lib/gen_cache/keys.rb +70 -0
- data/lib/gen_cache/version.rb +3 -0
- data/spec/gen_cache/cache_io/fetching_spec.rb +41 -0
- data/spec/gen_cache/cache_io/formatting_spec.rb +59 -0
- data/spec/gen_cache/cache_io/parsing_spec.rb +47 -0
- data/spec/gen_cache/cache_types/association_cache_spec.rb +313 -0
- data/spec/gen_cache/cache_types/attribute_cache_spec.rb +98 -0
- data/spec/gen_cache/cache_types/class_method_cache_spec.rb +72 -0
- data/spec/gen_cache/cache_types/key_cache_spec.rb +34 -0
- data/spec/gen_cache/cache_types/method_cache_spec.rb +108 -0
- data/spec/gen_cache/expiry_spec.rb +182 -0
- data/spec/gen_cache/keys_spec.rb +66 -0
- data/spec/gen_cache_spec.rb +76 -0
- data/spec/models/account.rb +7 -0
- data/spec/models/comment.rb +9 -0
- data/spec/models/descendant.rb +20 -0
- data/spec/models/group.rb +6 -0
- data/spec/models/image.rb +11 -0
- data/spec/models/location.rb +3 -0
- data/spec/models/post.rb +31 -0
- data/spec/models/tag.rb +6 -0
- data/spec/models/user.rb +54 -0
- data/spec/spec_helper.rb +96 -0
- metadata +149 -0
@@ -0,0 +1,66 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe GenCache do
|
4
|
+
let(:cache) { Rails.cache }
|
5
|
+
let(:user) { User.create(:login => 'flyerhzm') }
|
6
|
+
|
7
|
+
context "methods" do
|
8
|
+
|
9
|
+
it "should generate a model prefix" do
|
10
|
+
schema_string = User.columns.sort_by(&:name).map { |c| "#{c.name}:#{c.type}"}.join(",")
|
11
|
+
schema_hash = CityHash.hash64(schema_string)
|
12
|
+
prefix = GenCache.model_prefix(User)
|
13
|
+
prefix.should == "users/#{schema_hash}"
|
14
|
+
end
|
15
|
+
|
16
|
+
it "should generate an instance prefix" do
|
17
|
+
attribute_string = user.attributes.sort.map { |k,v| [k,v].join(":")}.join(",")
|
18
|
+
attribute_hash = CityHash.hash64(attribute_string)
|
19
|
+
prefix = GenCache.instance_prefix(user)
|
20
|
+
prefix.should == GenCache.model_prefix(User) + "/#{user.id.to_s}/#{attribute_hash}"
|
21
|
+
end
|
22
|
+
|
23
|
+
it "should generate an instance key" do
|
24
|
+
expected_key = {type: :object, key: GenCache.model_prefix(User) + "/#{user.id.to_s}"}
|
25
|
+
GenCache.instance_key(User, user.id).should == expected_key
|
26
|
+
end
|
27
|
+
|
28
|
+
it "should generate an attribute key" do
|
29
|
+
expected_key = {type: :object, key: GenCache.model_prefix(User) + '/login/pathouse'}
|
30
|
+
att_key = GenCache.attribute_key(User, :login, ['pathouse'])
|
31
|
+
att_key.should == expected_key
|
32
|
+
end
|
33
|
+
|
34
|
+
it "should generate an all w/ attribute key" do
|
35
|
+
expected_key = {type: :object, key: GenCache.model_prefix(User) + "/all/login/pathouse"}
|
36
|
+
att_key = GenCache.attribute_key(User, :login, ['pathouse'], all: true)
|
37
|
+
att_key.should == expected_key
|
38
|
+
end
|
39
|
+
|
40
|
+
it "should generate a class method key" do
|
41
|
+
expected_key = {type: :method, key: GenCache.model_prefix(User) + "/default_name"}
|
42
|
+
cmethod_key = GenCache.class_method_key(User, :default_name)
|
43
|
+
cmethod_key.should == expected_key
|
44
|
+
end
|
45
|
+
|
46
|
+
it "should return all class method keys" do
|
47
|
+
all_cmethod_keys = GenCache.all_class_method_keys(User)
|
48
|
+
comparison = User.cached_class_methods.map do |cmeth|
|
49
|
+
GenCache.class_method_key(User, cmeth)
|
50
|
+
end
|
51
|
+
all_cmethod_keys.should == comparison
|
52
|
+
end
|
53
|
+
|
54
|
+
it "should generate a method key" do
|
55
|
+
expected_key = {type: :method, key: GenCache.instance_prefix(user) + "/last_post"}
|
56
|
+
method_key = GenCache.method_key(user, :last_post)
|
57
|
+
method_key.should == expected_key
|
58
|
+
end
|
59
|
+
|
60
|
+
it "should generate an association key" do
|
61
|
+
expected_key = {type: :association, key: GenCache.instance_prefix(user) + "/posts"}
|
62
|
+
assoc_key = GenCache.association_key(user, :posts)
|
63
|
+
assoc_key.should == expected_key
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
@@ -0,0 +1,76 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Cacheable do
|
4
|
+
let(:cache) { Rails.cache }
|
5
|
+
let(:user) { User.create(:login => 'flyerhzm') }
|
6
|
+
|
7
|
+
before :all do
|
8
|
+
@group1 = Group.create(name: "Ruby On Rails")
|
9
|
+
@account = user.create_account(group: @group1)
|
10
|
+
@post1 = user.posts.create(:title => 'post1')
|
11
|
+
@image1 = @post1.images.create
|
12
|
+
@comment1 = @post1.comments.create
|
13
|
+
@tag1 = @post1.tags.create(title: "Rails")
|
14
|
+
end
|
15
|
+
|
16
|
+
before :each do
|
17
|
+
cache.clear
|
18
|
+
user.reload
|
19
|
+
end
|
20
|
+
|
21
|
+
context "Association Expires on Save" do
|
22
|
+
it "should delete has_many with_association cache" do
|
23
|
+
user.cached_posts
|
24
|
+
key = Cacheable.association_key(user, :posts)
|
25
|
+
Rails.cache.read(key[:key]).should_not be_nil
|
26
|
+
@post1.update_attribute(:title, "Blarg")
|
27
|
+
old_key = Rails.cache.read(key[:key]).first
|
28
|
+
Rails.cache.read(old_key[:key]).should be_nil
|
29
|
+
end
|
30
|
+
|
31
|
+
it "should delete has_many with polymorphic with_association cache" do
|
32
|
+
@post1.cached_comments
|
33
|
+
key = Cacheable.association_key(@post1, :comments)
|
34
|
+
Rails.cache.read(key[:key]).should_not be_nil
|
35
|
+
@comment1.update_attribute(:commentable_type, "fart")
|
36
|
+
old_key = Rails.cache.read(key[:key]).first
|
37
|
+
Rails.cache.read(old_key[:key]).should be_nil
|
38
|
+
end
|
39
|
+
|
40
|
+
it "should delete has_many through with_association cache" do
|
41
|
+
user.cached_images
|
42
|
+
key = Cacheable.association_key(user, :images)
|
43
|
+
Rails.cache.read(key[:key]).should_not be_nil
|
44
|
+
@image1.update_attribute(:viewable_type, "Gralb")
|
45
|
+
old_key = Rails.cache.read(key[:key]).first
|
46
|
+
Rails.cache.read(old_key[:key]).should be_nil
|
47
|
+
end
|
48
|
+
|
49
|
+
it "should delete has_one with_association cache" do
|
50
|
+
user.cached_account
|
51
|
+
key = Cacheable.association_key(user, :account)
|
52
|
+
Rails.cache.read(key[:key]).should_not be_nil
|
53
|
+
@account.update_attribute(:group_id, 7)
|
54
|
+
old_key = Rails.cache.read(key[:key]).first
|
55
|
+
Rails.cache.read(old_key[:key]).should be_nil
|
56
|
+
end
|
57
|
+
|
58
|
+
it "should delete has_and_belongs_to_many with_association cache" do
|
59
|
+
@post1.cached_tags
|
60
|
+
key = Cacheable.association_key(@post1, :tags)
|
61
|
+
Rails.cache.read(key[:key]).should_not be_nil
|
62
|
+
old_key = Rails.cache.read(key[:key]).first
|
63
|
+
@tag1.update_attribute(:title, "new title")
|
64
|
+
Rails.cache.read(old_key[:key]).should be_nil
|
65
|
+
end
|
66
|
+
|
67
|
+
it "should delete has_one through belongs_to with_association cache" do
|
68
|
+
@account.update_attribute(:group_id, 1)
|
69
|
+
@group1.update_attribute(:name, "Poop Group")
|
70
|
+
key = Cacheable.association_key(user, :group)
|
71
|
+
Rails.cache.read(key[:key]).should be_nil
|
72
|
+
user.cached_group.should == @group1
|
73
|
+
Rails.cache.read(key[:key]).should == [Cacheable.instance_key(Group, @group1.id)]
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
class Descendant < User
|
2
|
+
|
3
|
+
belongs_to :location
|
4
|
+
|
5
|
+
model_cache do
|
6
|
+
with_attribute :email
|
7
|
+
with_method :name
|
8
|
+
with_association :location
|
9
|
+
with_class_method :default_name
|
10
|
+
end
|
11
|
+
|
12
|
+
def name
|
13
|
+
"ScotterC"
|
14
|
+
end
|
15
|
+
|
16
|
+
def self.default_name
|
17
|
+
"ScotterC"
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
data/spec/models/post.rb
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
class Post < ActiveRecord::Base
|
2
|
+
include Cacheable
|
3
|
+
|
4
|
+
belongs_to :location
|
5
|
+
belongs_to :user
|
6
|
+
|
7
|
+
has_many :comments, :as => :commentable
|
8
|
+
has_many :images, :as => :viewable
|
9
|
+
|
10
|
+
has_and_belongs_to_many :tags
|
11
|
+
|
12
|
+
model_cache do
|
13
|
+
with_key
|
14
|
+
with_attribute :user_id
|
15
|
+
with_association :user, :comments, :images, :tags
|
16
|
+
with_class_method :default_post, :retrieve_with_user_id, :retrieve_with_both
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.default_post
|
20
|
+
Post.first
|
21
|
+
end
|
22
|
+
|
23
|
+
def self.retrieve_with_user_id(user_id)
|
24
|
+
Post.find_by_user_id(user_id)
|
25
|
+
end
|
26
|
+
|
27
|
+
def self.retrieve_with_both(user_id, post_id)
|
28
|
+
Post.find(post_id) == Post.find_by_user_id(user_id)
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
data/spec/models/tag.rb
ADDED
data/spec/models/user.rb
ADDED
@@ -0,0 +1,54 @@
|
|
1
|
+
class User < ActiveRecord::Base
|
2
|
+
include Cacheable
|
3
|
+
|
4
|
+
has_many :posts
|
5
|
+
has_one :account
|
6
|
+
has_many :images, through: :posts
|
7
|
+
|
8
|
+
has_one :group, through: :account
|
9
|
+
|
10
|
+
model_cache do
|
11
|
+
with_key
|
12
|
+
with_attribute :login
|
13
|
+
with_method :last_post, :bad_iv_name!, :bad_iv_name?
|
14
|
+
with_association :posts, :account, :images, :group
|
15
|
+
with_class_method :default_name, :user_with_id, :user_with_email,
|
16
|
+
:users_with_ids, :users_with_ids_in, :user_with_attributes
|
17
|
+
end
|
18
|
+
|
19
|
+
def last_post
|
20
|
+
posts.last
|
21
|
+
end
|
22
|
+
|
23
|
+
def self.default_name
|
24
|
+
"flyerhzm"
|
25
|
+
end
|
26
|
+
|
27
|
+
def bad_iv_name!
|
28
|
+
42
|
29
|
+
end
|
30
|
+
|
31
|
+
def bad_iv_name?
|
32
|
+
44
|
33
|
+
end
|
34
|
+
|
35
|
+
# accepts a number
|
36
|
+
def self.user_with_id(id)
|
37
|
+
User.find(id)
|
38
|
+
end
|
39
|
+
|
40
|
+
# accepts a string
|
41
|
+
def self.user_with_email(email)
|
42
|
+
User.find_by_email(email)
|
43
|
+
end
|
44
|
+
|
45
|
+
# accepts an array
|
46
|
+
def self.users_with_ids(ids)
|
47
|
+
User.find(ids)
|
48
|
+
end
|
49
|
+
|
50
|
+
# accepts a range
|
51
|
+
def self.users_with_ids_in(range)
|
52
|
+
User.select { |u| range.include?(u.id) }
|
53
|
+
end
|
54
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,96 @@
|
|
1
|
+
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
2
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
|
3
|
+
|
4
|
+
require 'rails'
|
5
|
+
require 'active_record'
|
6
|
+
require 'rspec'
|
7
|
+
require 'mocha/api'
|
8
|
+
require 'memcached'
|
9
|
+
require 'cacheable'
|
10
|
+
|
11
|
+
# It needs this order otherwise cacheable throws
|
12
|
+
# errors when looking for reflection classes
|
13
|
+
# Specifically, post can't be before tag
|
14
|
+
# and user can't be before post
|
15
|
+
require 'models/location'
|
16
|
+
require 'models/account'
|
17
|
+
require 'models/group'
|
18
|
+
require 'models/comment'
|
19
|
+
require 'models/image'
|
20
|
+
require 'models/tag'
|
21
|
+
require 'models/post'
|
22
|
+
require 'models/user'
|
23
|
+
require 'models/descendant'
|
24
|
+
|
25
|
+
ActiveRecord::Migration.verbose = false
|
26
|
+
ActiveRecord::Base.establish_connection(:adapter => 'sqlite3', :database => ':memory:')
|
27
|
+
|
28
|
+
module Rails
|
29
|
+
class <<self
|
30
|
+
def cache
|
31
|
+
@cache ||= Memcached::Rails.new
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
RSpec.configure do |config|
|
37
|
+
config.mock_with :mocha
|
38
|
+
|
39
|
+
config.filter_run focus: true
|
40
|
+
config.run_all_when_everything_filtered = true
|
41
|
+
|
42
|
+
config.before :all do
|
43
|
+
::ActiveRecord::Schema.define(:version => 1) do
|
44
|
+
create_table :users do |t|
|
45
|
+
t.string :login
|
46
|
+
t.string :email
|
47
|
+
end
|
48
|
+
|
49
|
+
create_table :accounts do |t|
|
50
|
+
t.integer :user_id
|
51
|
+
t.integer :group_id
|
52
|
+
end
|
53
|
+
|
54
|
+
create_table :posts do |t|
|
55
|
+
t.integer :user_id
|
56
|
+
t.string :title
|
57
|
+
t.integer :location_id
|
58
|
+
end
|
59
|
+
|
60
|
+
create_table :comments do |t|
|
61
|
+
t.integer :commentable_id
|
62
|
+
t.string :commentable_type
|
63
|
+
end
|
64
|
+
|
65
|
+
create_table :images do |t|
|
66
|
+
t.integer :viewable_id
|
67
|
+
t.string :viewable_type
|
68
|
+
t.string :name
|
69
|
+
end
|
70
|
+
|
71
|
+
create_table :tags do |t|
|
72
|
+
t.string :title
|
73
|
+
end
|
74
|
+
|
75
|
+
create_table :posts_tags, id: false do |t|
|
76
|
+
t.integer :post_id
|
77
|
+
t.integer :tag_id
|
78
|
+
end
|
79
|
+
|
80
|
+
create_table :groups do |t|
|
81
|
+
t.string :name
|
82
|
+
end
|
83
|
+
|
84
|
+
create_table :locations do |t|
|
85
|
+
t.string :city
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
end
|
90
|
+
|
91
|
+
config.after :all do
|
92
|
+
::ActiveRecord::Base.connection.tables.each do |table|
|
93
|
+
::ActiveRecord::Base.connection.drop_table(table)
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
metadata
ADDED
@@ -0,0 +1,149 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: generation_cacheable
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Pat McGee
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2013-11-17 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rails
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - '>='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 3.0.0
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '>='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 3.0.0
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rspec
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - '='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '2.8'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - '='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '2.8'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: mocha
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - '='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 0.10.5
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - '='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 0.10.5
|
55
|
+
description: a simple cache implementation with attribute based expiry
|
56
|
+
email:
|
57
|
+
- patmcgee331@gmail.com
|
58
|
+
executables: []
|
59
|
+
extensions: []
|
60
|
+
extra_rdoc_files: []
|
61
|
+
files:
|
62
|
+
- .gitignore
|
63
|
+
- .rspec
|
64
|
+
- .ruby-gemset
|
65
|
+
- .ruby-version
|
66
|
+
- ChangeLog
|
67
|
+
- Gemfile
|
68
|
+
- README.md
|
69
|
+
- Rakefile
|
70
|
+
- generation_cacheable.gemspec
|
71
|
+
- lib/gen_cache.rb
|
72
|
+
- lib/gen_cache/cache_io/fetching.rb
|
73
|
+
- lib/gen_cache/cache_io/formatting.rb
|
74
|
+
- lib/gen_cache/cache_io/parsing.rb
|
75
|
+
- lib/gen_cache/cache_types/association_cache.rb
|
76
|
+
- lib/gen_cache/cache_types/attribute_cache.rb
|
77
|
+
- lib/gen_cache/cache_types/class_method_cache.rb
|
78
|
+
- lib/gen_cache/cache_types/key_cache.rb
|
79
|
+
- lib/gen_cache/cache_types/method_cache.rb
|
80
|
+
- lib/gen_cache/caches.rb
|
81
|
+
- lib/gen_cache/expiry.rb
|
82
|
+
- lib/gen_cache/keys.rb
|
83
|
+
- lib/gen_cache/version.rb
|
84
|
+
- spec/gen_cache/cache_io/fetching_spec.rb
|
85
|
+
- spec/gen_cache/cache_io/formatting_spec.rb
|
86
|
+
- spec/gen_cache/cache_io/parsing_spec.rb
|
87
|
+
- spec/gen_cache/cache_types/association_cache_spec.rb
|
88
|
+
- spec/gen_cache/cache_types/attribute_cache_spec.rb
|
89
|
+
- spec/gen_cache/cache_types/class_method_cache_spec.rb
|
90
|
+
- spec/gen_cache/cache_types/key_cache_spec.rb
|
91
|
+
- spec/gen_cache/cache_types/method_cache_spec.rb
|
92
|
+
- spec/gen_cache/expiry_spec.rb
|
93
|
+
- spec/gen_cache/keys_spec.rb
|
94
|
+
- spec/gen_cache_spec.rb
|
95
|
+
- spec/models/account.rb
|
96
|
+
- spec/models/comment.rb
|
97
|
+
- spec/models/descendant.rb
|
98
|
+
- spec/models/group.rb
|
99
|
+
- spec/models/image.rb
|
100
|
+
- spec/models/location.rb
|
101
|
+
- spec/models/post.rb
|
102
|
+
- spec/models/tag.rb
|
103
|
+
- spec/models/user.rb
|
104
|
+
- spec/spec_helper.rb
|
105
|
+
homepage: https://github.com/pathouse/generation-cacheable
|
106
|
+
licenses: []
|
107
|
+
metadata: {}
|
108
|
+
post_install_message:
|
109
|
+
rdoc_options: []
|
110
|
+
require_paths:
|
111
|
+
- lib
|
112
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
113
|
+
requirements:
|
114
|
+
- - '>='
|
115
|
+
- !ruby/object:Gem::Version
|
116
|
+
version: '0'
|
117
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
118
|
+
requirements:
|
119
|
+
- - '>='
|
120
|
+
- !ruby/object:Gem::Version
|
121
|
+
version: '0'
|
122
|
+
requirements: []
|
123
|
+
rubyforge_project:
|
124
|
+
rubygems_version: 2.0.3
|
125
|
+
signing_key:
|
126
|
+
specification_version: 4
|
127
|
+
summary: a simple cache implementation with attribute based expiry
|
128
|
+
test_files:
|
129
|
+
- spec/gen_cache/cache_io/fetching_spec.rb
|
130
|
+
- spec/gen_cache/cache_io/formatting_spec.rb
|
131
|
+
- spec/gen_cache/cache_io/parsing_spec.rb
|
132
|
+
- spec/gen_cache/cache_types/association_cache_spec.rb
|
133
|
+
- spec/gen_cache/cache_types/attribute_cache_spec.rb
|
134
|
+
- spec/gen_cache/cache_types/class_method_cache_spec.rb
|
135
|
+
- spec/gen_cache/cache_types/key_cache_spec.rb
|
136
|
+
- spec/gen_cache/cache_types/method_cache_spec.rb
|
137
|
+
- spec/gen_cache/expiry_spec.rb
|
138
|
+
- spec/gen_cache/keys_spec.rb
|
139
|
+
- spec/gen_cache_spec.rb
|
140
|
+
- spec/models/account.rb
|
141
|
+
- spec/models/comment.rb
|
142
|
+
- spec/models/descendant.rb
|
143
|
+
- spec/models/group.rb
|
144
|
+
- spec/models/image.rb
|
145
|
+
- spec/models/location.rb
|
146
|
+
- spec/models/post.rb
|
147
|
+
- spec/models/tag.rb
|
148
|
+
- spec/models/user.rb
|
149
|
+
- spec/spec_helper.rb
|