cache_it 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/README CHANGED
@@ -1,23 +1,59 @@
1
1
  cache_it
2
2
  ========
3
3
 
4
- Cache for ActiveRecord objects, backed by ActiveSupport::CacheStore of your choice. Cache-money was
5
- not yet ported to Rails 3 so I rolled my own.
4
+ Cache for ActiveRecord objects, backed by ActiveSupport::CacheStore of your choice.
6
5
 
7
6
 
8
7
  Example
9
8
  =======
10
9
 
10
+ create table users (
11
+ `id` int(11) not null increment,
12
+ `first` varchar(255),
13
+ `last` varchar(255),
14
+ `email` varchar(255),
15
+ `age` int(11),
16
+ `points` int(11),
17
+ primary key (`id`),
18
+ unique key `index_users_on_email` (`email`),
19
+ unique key `index_users_on_last_first` (`last`, `first`)
20
+ );
21
+
11
22
  class User < ActiveRecord::Base
12
23
  cache_it do |c|
13
- c.index :first, :last
24
+ c.index :last, :first
14
25
  c.index :email
26
+ c.counters :points
15
27
  end
16
28
  end
17
29
 
18
- user = User.cache_it_find :first => "Joe", :last => "Schmoe"
19
- user = User.cache_it_find :email => "joe@example.com"
30
+ user = User.cache_it.find :first => "Joe", :last => "Schmoe"
31
+ user.email = "joe@example.com"
32
+ user.points = 5
33
+ user.age = 29
34
+ user.save
20
35
  user.age = 30
21
- user.cache_it_write
36
+ user.cache_it.write
37
+
38
+ User.cache_it.read(:email => "joe@example.com").first.age
39
+ => 30
40
+ User.where(:email => "joe@example.com").first.age
41
+ => 29
42
+ user.save
43
+ => true
44
+ User.where(:email => "joe@example.com").first.age
45
+ => 30
46
+
47
+ user.cache_it.increment :points
48
+ => 6
49
+ User.cache_it.read(:first => "Joe", :last => "Schmoe").points
50
+ => 6
51
+ User.where(:first => "Joe", :last => "Schmoe").first.points
52
+ => 5
53
+ user.save
54
+ => true
55
+ User.where(:first => "Joe", :last => "Schmoe").first.points
56
+ => 6
57
+
22
58
 
23
59
  Copyright (c) 2011 Rodrigo Vanegas, released under the MIT license
data/cache_it.gemspec CHANGED
@@ -13,6 +13,10 @@ Gem::Specification.new do |s|
13
13
  s.description = %q{Integrates ActiveRecord with cache stores provided by Rails.cache, incluing memcached}
14
14
 
15
15
  s.rubyforge_project = "cache_it"
16
+ s.add_dependency 'activerecord'
17
+ s.add_development_dependency 'rspec'
18
+ s.add_development_dependency 'ruby-debug19'
19
+ s.add_development_dependency 'sqlite3'
16
20
 
17
21
  s.files = `git ls-files`.split("\n")
18
22
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
@@ -1,3 +1,3 @@
1
1
  module CacheIt
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
data/lib/cache_it.rb CHANGED
@@ -162,6 +162,7 @@ module CacheIt
162
162
  obj = @base.new
163
163
  obj.send :attributes=, attributes, false
164
164
  obj.instance_variable_set("@new_record", false) if obj.id
165
+ obj.instance_variable_set("@changed_attributes", {}) if obj.id
165
166
  obj.cache_it.init_counters unless options[:skip_counters]
166
167
  end
167
168
  return obj
@@ -80,6 +80,7 @@ silence_stream(STDOUT) do
80
80
  create_table :users do |t|
81
81
  t.string :code
82
82
  t.string :name
83
+ t.boolean :flag, :default => false
83
84
  t.integer :points, :default => 0
84
85
  end
85
86
  end
@@ -165,6 +166,26 @@ describe CacheIt do
165
166
  it "doesn't accept unknown index" do
166
167
  expect { User.cache_it.read(:points => 10) }.to raise_error(/index not available/)
167
168
  end
169
+
170
+ it "saves boolean correctly on repetition" do
171
+ User.all[0].flag.should == false
172
+ u = User.cache_it.find :name => "joe"
173
+ u.flag = true
174
+ u.save
175
+ User.all[0].flag.should == true
176
+ u = User.cache_it.find :name => "joe"
177
+ u.flag = false
178
+ u.save
179
+ User.all[0].flag.should == false
180
+ u = User.cache_it.find :name => "joe"
181
+ u.flag = true
182
+ u.save
183
+ User.all[0].flag.should == true
184
+ u = User.cache_it.find :name => "joe"
185
+ u.flag = false
186
+ u.save
187
+ User.all[0].flag.should == false
188
+ end
168
189
  end
169
190
 
170
191
  context "config" do
@@ -226,7 +247,7 @@ describe CacheIt do
226
247
 
227
248
  it "cannot config twice" do
228
249
  expect {@users_class.cache_it :name}.to_not raise_error
229
- expect {@users_class.cache_it :code}.to raise_error
250
+ expect {@users_class.cache_it :name}.to raise_error
230
251
  end
231
252
  end
232
253
  end
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 0
8
- - 1
9
- version: 0.0.1
8
+ - 2
9
+ version: 0.0.2
10
10
  platform: ruby
11
11
  authors:
12
12
  - Rodrigo Vanegas
@@ -14,10 +14,61 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2011-04-11 00:00:00 -07:00
17
+ date: 2011-05-01 00:00:00 -07:00
18
18
  default_executable:
19
- dependencies: []
20
-
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ name: activerecord
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ none: false
25
+ requirements:
26
+ - - ">="
27
+ - !ruby/object:Gem::Version
28
+ segments:
29
+ - 0
30
+ version: "0"
31
+ type: :runtime
32
+ version_requirements: *id001
33
+ - !ruby/object:Gem::Dependency
34
+ name: rspec
35
+ prerelease: false
36
+ requirement: &id002 !ruby/object:Gem::Requirement
37
+ none: false
38
+ requirements:
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ segments:
42
+ - 0
43
+ version: "0"
44
+ type: :development
45
+ version_requirements: *id002
46
+ - !ruby/object:Gem::Dependency
47
+ name: ruby-debug19
48
+ prerelease: false
49
+ requirement: &id003 !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ segments:
55
+ - 0
56
+ version: "0"
57
+ type: :development
58
+ version_requirements: *id003
59
+ - !ruby/object:Gem::Dependency
60
+ name: sqlite3
61
+ prerelease: false
62
+ requirement: &id004 !ruby/object:Gem::Requirement
63
+ none: false
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ segments:
68
+ - 0
69
+ version: "0"
70
+ type: :development
71
+ version_requirements: *id004
21
72
  description: Integrates ActiveRecord with cache stores provided by Rails.cache, incluing memcached
22
73
  email:
23
74
  - rvanegas@gmail.com