simple_cacheable 1.2.0 → 1.2.1

Sign up to get free protection for your applications and to get access to all the features.
data/.travis.yml ADDED
@@ -0,0 +1,4 @@
1
+ language: ruby
2
+ rvm:
3
+ - 1.9.3
4
+ - jruby-head
data/cacheable.gemspec CHANGED
@@ -15,6 +15,7 @@ Gem::Specification.new do |s|
15
15
  s.add_dependency("rails", ">= 3.0.0")
16
16
  s.add_development_dependency("rspec")
17
17
  s.add_development_dependency("mocha")
18
+ s.add_development_dependency("memcached")
18
19
 
19
20
  s.files = `git ls-files`.split("\n")
20
21
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
@@ -1,3 +1,3 @@
1
1
  module Cacheable
2
- VERSION = "1.2.0"
2
+ VERSION = "1.2.1"
3
3
  end
data/lib/cacheable.rb CHANGED
@@ -1,3 +1,5 @@
1
+ require 'uri'
2
+
1
3
  module Cacheable
2
4
  def self.included(base)
3
5
  base.class_eval do
@@ -100,7 +102,7 @@ module Cacheable
100
102
  end
101
103
 
102
104
  def attribute_cache_key(attribute, value)
103
- "#{name.tableize}/attribute/#{attribute}/#{value}"
105
+ "#{name.tableize}/attribute/#{attribute}/#{URI.escape(value)}"
104
106
  end
105
107
  end
106
108
  end
@@ -18,12 +18,12 @@ describe Cacheable do
18
18
 
19
19
  context "with_key" do
20
20
  it "should not cache key" do
21
- cache.data["users/#{@user.id}"].should be_nil
21
+ Rails.cache.read("users/#{@user.id}").should be_nil
22
22
  end
23
23
 
24
24
  it "should cache by User#id" do
25
25
  User.find_cached(@user.id).should == @user
26
- cache.data["users/#{@user.id}"].should == @user
26
+ Rails.cache.read("users/#{@user.id}").should == @user
27
27
  end
28
28
 
29
29
  it "should get cached by User#id multiple times" do
@@ -34,28 +34,33 @@ describe Cacheable do
34
34
 
35
35
  context "with_attribute" do
36
36
  it "should not cache User.find_by_login" do
37
- cache.data["users/attribute/login/flyerhzm"].should be_nil
37
+ Rails.cache.read("users/attribute/login/flyerhzm").should be_nil
38
38
  end
39
39
 
40
40
  it "should cache by User.find_by_login" do
41
41
  User.find_cached_by_login("flyerhzm").should == @user
42
- cache.data["users/attribute/login/flyerhzm"].should == @user
42
+ Rails.cache.read("users/attribute/login/flyerhzm").should == @user
43
43
  end
44
44
 
45
45
  it "should get cached by User.find_by_login multiple times" do
46
46
  User.find_cached_by_login("flyerhzm")
47
47
  User.find_cached_by_login("flyerhzm").should == @user
48
48
  end
49
+
50
+ it "should escape whitespace" do
51
+ new_user = User.create(:login => "user space")
52
+ User.find_cached_by_login("user space").should == new_user
53
+ end
49
54
  end
50
55
 
51
56
  context "with_method" do
52
57
  it "should not cache User.last_post" do
53
- cache.data["users/#{@user.id}/method/last_post"].should be_nil
58
+ Rails.cache.read("users/#{@user.id}/method/last_post").should be_nil
54
59
  end
55
60
 
56
61
  it "should cache User#last_post" do
57
62
  @user.cached_last_post.should == @user.last_post
58
- cache.data["users/#{@user.id}/method/last_post"].should == @user.last_post
63
+ Rails.cache.read("users/#{@user.id}/method/last_post").should == @user.last_post
59
64
  end
60
65
 
61
66
  it "should cache User#last_post multiple times" do
@@ -67,12 +72,12 @@ describe Cacheable do
67
72
  context "with_association" do
68
73
  context "belongs_to" do
69
74
  it "should not cache association" do
70
- cache.data["users/#{@user.id}"].should be_nil
75
+ Rails.cache.read("users/#{@user.id}").should be_nil
71
76
  end
72
77
 
73
78
  it "should cache Post#user" do
74
79
  @post1.cached_user.should == @user
75
- cache.data["users/#{@user.id}"].should == @user
80
+ Rails.cache.read("users/#{@user.id}").should == @user
76
81
  end
77
82
 
78
83
  it "should cache Post#user multiple times" do
@@ -81,20 +86,20 @@ describe Cacheable do
81
86
  end
82
87
 
83
88
  it "should cache Comment#commentable with polymorphic" do
84
- cache.data["posts/#{@post1.id}"].should be_nil
89
+ Rails.cache.read("posts/#{@post1.id}").should be_nil
85
90
  @comment1.cached_commentable.should == @post1
86
- cache.data["posts/#{@post1.id}"].should == @post1
91
+ Rails.cache.read("posts/#{@post1.id}").should == @post1
87
92
  end
88
93
  end
89
94
 
90
95
  context "has_many" do
91
96
  it "should not cache associations" do
92
- cache.data["users/#{@user.id}/association/posts"].should be_nil
97
+ Rails.cache.read("users/#{@user.id}/association/posts").should be_nil
93
98
  end
94
99
 
95
100
  it "should cache User#posts" do
96
101
  @user.cached_posts.should == [@post1, @post2]
97
- cache.data["users/#{@user.id}/association/posts"].should == [@post1, @post2]
102
+ Rails.cache.read("users/#{@user.id}/association/posts").should == [@post1, @post2]
98
103
  end
99
104
 
100
105
  it "should cache User#posts multiple times" do
@@ -105,12 +110,12 @@ describe Cacheable do
105
110
 
106
111
  context "has_many with polymorphic" do
107
112
  it "should not cache associations" do
108
- cache.data["posts/#{@post1.id}/association/comments"].should be_nil
113
+ Rails.cache.read("posts/#{@post1.id}/association/comments").should be_nil
109
114
  end
110
115
 
111
116
  it "should cache Post#comments" do
112
117
  @post1.cached_comments.should == [@comment1, @comment2]
113
- cache.data["posts/#{@post1.id}/association/comments"].should == [@comment1, @comment2]
118
+ Rails.cache.read("posts/#{@post1.id}/association/comments").should == [@comment1, @comment2]
114
119
  end
115
120
 
116
121
  it "should cache Post#comments multiple times" do
@@ -121,12 +126,12 @@ describe Cacheable do
121
126
 
122
127
  context "has_one" do
123
128
  it "should not cache associations" do
124
- cache.data["users/#{@user.id}/association/account"].should be_nil
129
+ Rails.cache.read("users/#{@user.id}/association/account").should be_nil
125
130
  end
126
131
 
127
132
  it "should cache User#posts" do
128
133
  @user.cached_account.should == @account
129
- cache.data["users/#{@user.id}/association/account"].should == @account
134
+ Rails.cache.read("users/#{@user.id}/association/account").should == @account
130
135
  end
131
136
 
132
137
  it "should cache User#posts multiple times" do
@@ -139,44 +144,44 @@ describe Cacheable do
139
144
  context "expire_model_cache" do
140
145
  it "should delete with_key cache" do
141
146
  user = User.find_cached(@user.id)
142
- cache.data["users/#{user.id}"].should_not be_nil
147
+ Rails.cache.read("users/#{user.id}").should_not be_nil
143
148
  user.expire_model_cache
144
- cache.data["users/#{user.id}"].should be_nil
149
+ Rails.cache.read("users/#{user.id}").should be_nil
145
150
  end
146
151
 
147
152
  it "should delete with_attribute cache" do
148
153
  user = User.find_cached_by_login("flyerhzm")
149
- cache.data["users/attribute/login/flyerhzm"].should == @user
154
+ Rails.cache.read("users/attribute/login/flyerhzm").should == @user
150
155
  @user.expire_model_cache
151
- cache.data["users/attribute/login/flyerhzm"].should be_nil
156
+ Rails.cache.read("users/attribute/login/flyerhzm").should be_nil
152
157
  end
153
158
 
154
159
  it "should delete with_method cache" do
155
160
  @user.cached_last_post
156
- cache.data["users/#{@user.id}/method/last_post"].should_not be_nil
161
+ Rails.cache.read("users/#{@user.id}/method/last_post").should_not be_nil
157
162
  @user.expire_model_cache
158
- cache.data["users/#{@user.id}/method/last_post"].should be_nil
163
+ Rails.cache.read("users/#{@user.id}/method/last_post").should be_nil
159
164
  end
160
165
 
161
166
  it "should delete has_many with_association cache" do
162
167
  @user.cached_posts
163
- cache.data["users/#{@user.id}/association/posts"].should_not be_nil
168
+ Rails.cache.read("users/#{@user.id}/association/posts").should_not be_nil
164
169
  @post1.save
165
- cache.data["users/#{@user.id}/association/posts"].should be_nil
170
+ Rails.cache.read("users/#{@user.id}/association/posts").should be_nil
166
171
  end
167
172
 
168
173
  it "should delete has_many with polymorphic with_association cache" do
169
174
  @post1.cached_comments
170
- cache.data["posts/#{@post1.id}/association/comments"].should_not be_nil
175
+ Rails.cache.read("posts/#{@post1.id}/association/comments").should_not be_nil
171
176
  @comment1.save
172
- cache.data["posts/#{@post1.id}/association/comments"].should be_nil
177
+ Rails.cache.read("posts/#{@post1.id}/association/comments").should be_nil
173
178
  end
174
179
 
175
180
  it "should delete has_one with_association cache" do
176
181
  @user.cached_account
177
- cache.data["users/#{@user.id}/association/account"].should_not be_nil
182
+ Rails.cache.read("users/#{@user.id}/association/account").should_not be_nil
178
183
  @account.save
179
- cache.data["users/#{@user.id}/association/account"].should be_nil
184
+ Rails.cache.read("users/#{@user.id}/association/account").should be_nil
180
185
  end
181
186
  end
182
187
  end
data/spec/spec_helper.rb CHANGED
@@ -5,6 +5,7 @@ require 'rails'
5
5
  require 'active_record'
6
6
  require 'rspec'
7
7
  require 'mocha_standalone'
8
+ require 'memcached'
8
9
 
9
10
  require 'cacheable'
10
11
 
@@ -16,42 +17,10 @@ $LOAD_PATH.unshift(MODELS)
16
17
 
17
18
  Dir[ File.join(MODELS, "*.rb") ].sort.each { |file| require File.basename(file) }
18
19
 
19
- class TestCache
20
- attr_reader :data
21
-
22
- def initialize
23
- @data = {}
24
- end
25
-
26
- def fetch(key, &block)
27
- if read(key)
28
- read(key)
29
- else
30
- write(key, block.call)
31
- end
32
- end
33
-
34
- def read(key)
35
- @data[key]
36
- end
37
-
38
- def write(key, value)
39
- @data[key] = value
40
- end
41
-
42
- def delete(key)
43
- @data.delete key
44
- end
45
-
46
- def clear
47
- @data.clear
48
- end
49
- end
50
-
51
20
  module Rails
52
21
  class <<self
53
22
  def cache
54
- @cache ||= TestCache.new
23
+ @cache ||= Memcached::Rails.new
55
24
  end
56
25
  end
57
26
  end
@@ -59,6 +28,9 @@ end
59
28
  RSpec.configure do |config|
60
29
  config.mock_with :mocha
61
30
 
31
+ config.filter_run focus: true
32
+ config.run_all_when_everything_filtered = true
33
+
62
34
  config.before :all do
63
35
  ::ActiveRecord::Schema.define(:version => 1) do
64
36
  create_table :users do |t|
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: simple_cacheable
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 1.2.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-08-30 00:00:00.000000000 Z
12
+ date: 2012-11-25 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
@@ -59,6 +59,22 @@ dependencies:
59
59
  - - ! '>='
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: memcached
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ type: :development
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
62
78
  description: a simple cache implementation based on activerecord
63
79
  email:
64
80
  - flyerhzm@gmail.com
@@ -69,6 +85,7 @@ files:
69
85
  - .gitignore
70
86
  - .rspec
71
87
  - .rvmrc
88
+ - .travis.yml
72
89
  - Gemfile
73
90
  - README.md
74
91
  - Rakefile
@@ -95,7 +112,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
95
112
  version: '0'
96
113
  segments:
97
114
  - 0
98
- hash: -1878933439133819997
115
+ hash: 2779579293480982592
99
116
  required_rubygems_version: !ruby/object:Gem::Requirement
100
117
  none: false
101
118
  requirements:
@@ -104,7 +121,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
104
121
  version: '0'
105
122
  segments:
106
123
  - 0
107
- hash: -1878933439133819997
124
+ hash: 2779579293480982592
108
125
  requirements: []
109
126
  rubyforge_project:
110
127
  rubygems_version: 1.8.24