mongo_rails_cache 0.1.0 → 0.1.1
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/VERSION +1 -1
- data/lib/mongo_rails_cache.rb +1 -0
- data/lib/store/cache.rb +50 -0
- data/mongo_rails_cache.gemspec +5 -5
- data/spec/cache/cache_spec.rb +4 -4
- data/spec/mongo_rails_cache_spec.rb +8 -0
- data/spec/spec_helper.rb +1 -1
- metadata +6 -6
- data/lib/mongo_store.rb +0 -1
- data/lib/mongo_store/cache.rb +0 -48
- data/spec/mongo_store_spec.rb +0 -8
data/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
0.1.
|
|
1
|
+
0.1.1
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
require 'store/cache'
|
data/lib/store/cache.rb
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
begin
|
|
2
|
+
require 'mongo'
|
|
3
|
+
rescue LoadError => e
|
|
4
|
+
$stderr.puts "You don't have mongo installed in your application. Please add it to your Gemfile and run bundle install"
|
|
5
|
+
raise e
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
require 'active_support/all'
|
|
9
|
+
|
|
10
|
+
module Mongo
|
|
11
|
+
module Store
|
|
12
|
+
class Cache < ActiveSupport::Cache::Store
|
|
13
|
+
attr_reader :collection, :options
|
|
14
|
+
|
|
15
|
+
def initialize(collection, options={})
|
|
16
|
+
@collection, @options = collection, options || {}
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def expires_in
|
|
20
|
+
@expires_in ||= options[:expires_in] || 1.month
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def write_entry(key, entry, options)
|
|
24
|
+
doc = {:_id => key.to_s, :value => BSON::Binary.new(Marshal.dump(entry))}
|
|
25
|
+
@collection.save(doc)
|
|
26
|
+
true
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def read_entry(key, options)
|
|
30
|
+
entry = @collection.find_one(:_id => key.to_s)
|
|
31
|
+
if entry
|
|
32
|
+
Marshal.load(entry['value'].to_s)
|
|
33
|
+
else
|
|
34
|
+
nil
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
# we don't get any info from mongo driver if delete actually deleted anything. this will always return true.
|
|
39
|
+
def delete_entry(key, options)
|
|
40
|
+
@collection.remove({:_id => key.to_s})
|
|
41
|
+
true
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def clear(options=nil)
|
|
45
|
+
@collection.remove
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
data/mongo_rails_cache.gemspec
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
Gem::Specification.new do |s|
|
|
7
7
|
s.name = %q{mongo_rails_cache}
|
|
8
|
-
s.version = "0.1.
|
|
8
|
+
s.version = "0.1.1"
|
|
9
9
|
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
|
11
11
|
s.authors = ["Ashley Streb"]
|
|
@@ -24,11 +24,11 @@ Gem::Specification.new do |s|
|
|
|
24
24
|
"README.rdoc",
|
|
25
25
|
"Rakefile",
|
|
26
26
|
"VERSION",
|
|
27
|
-
"lib/
|
|
28
|
-
"lib/
|
|
27
|
+
"lib/mongo_rails_cache.rb",
|
|
28
|
+
"lib/store/cache.rb",
|
|
29
29
|
"mongo_rails_cache.gemspec",
|
|
30
30
|
"spec/cache/cache_spec.rb",
|
|
31
|
-
"spec/
|
|
31
|
+
"spec/mongo_rails_cache_spec.rb",
|
|
32
32
|
"spec/spec_helper.rb"
|
|
33
33
|
]
|
|
34
34
|
s.homepage = %q{http://github.com/roark31337/mongo_rails_cache}
|
|
@@ -38,7 +38,7 @@ Gem::Specification.new do |s|
|
|
|
38
38
|
s.summary = %q{Rails3 ActiveSupport Cache built on MongoDB}
|
|
39
39
|
s.test_files = [
|
|
40
40
|
"spec/cache/cache_spec.rb",
|
|
41
|
-
"spec/
|
|
41
|
+
"spec/mongo_rails_cache_spec.rb",
|
|
42
42
|
"spec/spec_helper.rb"
|
|
43
43
|
]
|
|
44
44
|
|
data/spec/cache/cache_spec.rb
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
|
2
2
|
|
|
3
|
-
describe
|
|
3
|
+
describe Mongo::Store::Cache do
|
|
4
4
|
before(:each) do
|
|
5
5
|
DB.collections.each do |collection|
|
|
6
6
|
collection.remove
|
|
@@ -8,11 +8,11 @@ describe MongoStore::Cache do
|
|
|
8
8
|
end
|
|
9
9
|
|
|
10
10
|
@collection = DB['mongo_store_cache']
|
|
11
|
-
@store =
|
|
11
|
+
@store = Mongo::Store::Cache.new(@collection)
|
|
12
12
|
end
|
|
13
13
|
|
|
14
14
|
let(:collection) { DB['mongo_store_cache'] }
|
|
15
|
-
let(:store) {
|
|
15
|
+
let(:store) { Mongo::Store::Cache.new(collection, nil) }
|
|
16
16
|
|
|
17
17
|
it "has a collection" do
|
|
18
18
|
store.collection.should == collection
|
|
@@ -23,7 +23,7 @@ describe MongoStore::Cache do
|
|
|
23
23
|
end
|
|
24
24
|
|
|
25
25
|
it "can set default expires_in" do
|
|
26
|
-
|
|
26
|
+
Mongo::Store::Cache.new(collection, :expires_in => 5.minutes).expires_in.should == 5.minutes
|
|
27
27
|
end
|
|
28
28
|
|
|
29
29
|
describe "#write" do
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
|
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
|
5
5
|
segments:
|
|
6
6
|
- 0
|
|
7
7
|
- 1
|
|
8
|
-
-
|
|
9
|
-
version: 0.1.
|
|
8
|
+
- 1
|
|
9
|
+
version: 0.1.1
|
|
10
10
|
platform: ruby
|
|
11
11
|
authors:
|
|
12
12
|
- Ashley Streb
|
|
@@ -49,11 +49,11 @@ files:
|
|
|
49
49
|
- README.rdoc
|
|
50
50
|
- Rakefile
|
|
51
51
|
- VERSION
|
|
52
|
-
- lib/
|
|
53
|
-
- lib/
|
|
52
|
+
- lib/mongo_rails_cache.rb
|
|
53
|
+
- lib/store/cache.rb
|
|
54
54
|
- mongo_rails_cache.gemspec
|
|
55
55
|
- spec/cache/cache_spec.rb
|
|
56
|
-
- spec/
|
|
56
|
+
- spec/mongo_rails_cache_spec.rb
|
|
57
57
|
- spec/spec_helper.rb
|
|
58
58
|
has_rdoc: true
|
|
59
59
|
homepage: http://github.com/roark31337/mongo_rails_cache
|
|
@@ -89,5 +89,5 @@ specification_version: 3
|
|
|
89
89
|
summary: Rails3 ActiveSupport Cache built on MongoDB
|
|
90
90
|
test_files:
|
|
91
91
|
- spec/cache/cache_spec.rb
|
|
92
|
-
- spec/
|
|
92
|
+
- spec/mongo_rails_cache_spec.rb
|
|
93
93
|
- spec/spec_helper.rb
|
data/lib/mongo_store.rb
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
require 'mongo_store/cache'
|
data/lib/mongo_store/cache.rb
DELETED
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
begin
|
|
2
|
-
require 'mongo'
|
|
3
|
-
rescue LoadError => e
|
|
4
|
-
$stderr.puts "You don't have mongo installed in your application. Please add it to your Gemfile and run bundle install"
|
|
5
|
-
raise e
|
|
6
|
-
end
|
|
7
|
-
|
|
8
|
-
require 'active_support/all'
|
|
9
|
-
|
|
10
|
-
module MongoStore
|
|
11
|
-
class Cache < ActiveSupport::Cache::Store
|
|
12
|
-
attr_reader :collection, :options
|
|
13
|
-
|
|
14
|
-
def initialize(collection, options={})
|
|
15
|
-
@collection, @options = collection, options || {}
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
def expires_in
|
|
19
|
-
@expires_in ||= options[:expires_in] || 1.month
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
def write_entry(key, entry, options)
|
|
23
|
-
doc = {:_id => key.to_s, :value => BSON::Binary.new(Marshal.dump(entry))}
|
|
24
|
-
@collection.save(doc)
|
|
25
|
-
true
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
def read_entry(key, options)
|
|
29
|
-
entry = @collection.find_one(:_id => key.to_s)
|
|
30
|
-
if entry
|
|
31
|
-
Marshal.load(entry['value'].to_s)
|
|
32
|
-
else
|
|
33
|
-
nil
|
|
34
|
-
end
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
# we don't get any info from mongo driver if delete actually deleted anything. this will always return true.
|
|
38
|
-
def delete_entry(key, options)
|
|
39
|
-
@collection.remove({:_id => key.to_s})
|
|
40
|
-
true
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
def clear(options=nil)
|
|
44
|
-
@collection.remove
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
end
|
|
48
|
-
end
|