remember 0.0.2 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,56 +1,38 @@
1
- require 'moneta'
1
+ require "forwardable"
2
+ require "moneta"
2
3
 
3
4
  class Remember
4
- def initialize(moneta, options = {})
5
- @moneta = moneta.new(options)
6
- end
7
-
8
- def []=(key, object)
9
- store(key, object)
5
+ extend Forwardable
6
+
7
+ attr_accessor :moneta
8
+ def_delegators :moneta, :clear, :key?, :has_key?
9
+
10
+ def initialize(moneta)
11
+ self.moneta = moneta
10
12
  end
11
13
 
12
14
  def store(key, object, options = {})
13
- @moneta.store(key, Marshal.dump(object), options)
14
- object
15
+ object.tap { |value| moneta.store(key, Marshal.dump(value), options) }
15
16
  end
16
17
 
17
- def update_key(key, options = {})
18
- if @moneta.key?(key)
19
- @moneta.update_key(key, options)
20
- end
21
- end
22
-
23
- def fetch(key, options, &block)
24
- if value = self[key]
25
- value
26
- else
27
- store(key, yield, options)
28
- end
29
- end
30
-
31
- def [](key)
32
- deserialize(@moneta[key])
18
+ def get(key)
19
+ deserialize(moneta[key])
33
20
  end
34
21
 
35
22
  def delete(key)
36
- deserialize(@moneta.delete(key))
37
- end
38
-
39
- def key?(key)
40
- @moneta.key?(key)
23
+ deserialize(moneta.delete(key))
41
24
  end
42
-
43
- def clear
44
- @moneta.clear
25
+
26
+ def fetch(key, options = {}, &block)
27
+ get(key) || store(key, yield, options)
45
28
  end
46
-
47
- alias has_key? key?
48
-
29
+
30
+ alias_method :[], :get
31
+ alias_method :[]=, :store
32
+
49
33
  private
50
-
51
- def deserialize(value)
52
- if value && value.size > 0
53
- Marshal.load(value)
54
- end
55
- end
56
- end
34
+
35
+ def deserialize(value)
36
+ Marshal.load(value) if value && value.size > 0
37
+ end
38
+ end
metadata CHANGED
@@ -1,69 +1,78 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: remember
3
- version: !ruby/object:Gem::Version
4
- version: 0.0.2
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.5
5
+ prerelease:
5
6
  platform: ruby
6
- authors:
7
+ authors:
7
8
  - John Pignata
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
-
12
- date: 2009-11-16 00:00:00 -05:00
13
- default_executable:
14
- dependencies:
15
- - !ruby/object:Gem::Dependency
12
+ date: 2011-11-14 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
16
15
  name: moneta
17
- type: :runtime
18
- version_requirement:
19
- version_requirements: !ruby/object:Gem::Requirement
20
- requirements:
21
- - - "="
22
- - !ruby/object:Gem::Version
16
+ requirement: &70188720542740 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
23
21
  version: 0.6.0
24
- version:
25
- description: A Moneta wrapper for Ruby object persistence
26
- email: john.pignata@gmail.com
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: *70188720542740
25
+ - !ruby/object:Gem::Dependency
26
+ name: rake
27
+ requirement: &70188720542160 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ~>
31
+ - !ruby/object:Gem::Version
32
+ version: 0.9.2
33
+ type: :development
34
+ prerelease: false
35
+ version_requirements: *70188720542160
36
+ - !ruby/object:Gem::Dependency
37
+ name: rspec
38
+ requirement: &70188720541640 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ~>
42
+ - !ruby/object:Gem::Version
43
+ version: 2.7.0
44
+ type: :development
45
+ prerelease: false
46
+ version_requirements: *70188720541640
47
+ description: Quick hack to build quick persistence between application instances
48
+ email: john@pignata.com
27
49
  executables: []
28
-
29
50
  extensions: []
30
-
31
- extra_rdoc_files:
32
- - README.md
33
- files:
34
- - README.md
35
- - Rakefile
36
- - VERSION
37
- - doc/remember.jpg
51
+ extra_rdoc_files: []
52
+ files:
38
53
  - lib/remember.rb
39
- - spec/remember_spec.rb
40
- has_rdoc: true
41
54
  homepage: http://github.com/jpignata/remember
42
55
  licenses: []
43
-
44
56
  post_install_message:
45
- rdoc_options:
46
- - --charset=UTF-8
47
- require_paths:
57
+ rdoc_options: []
58
+ require_paths:
48
59
  - lib
49
- required_ruby_version: !ruby/object:Gem::Requirement
50
- requirements:
51
- - - ">="
52
- - !ruby/object:Gem::Version
53
- version: "0"
54
- version:
55
- required_rubygems_version: !ruby/object:Gem::Requirement
56
- requirements:
57
- - - ">="
58
- - !ruby/object:Gem::Version
59
- version: "0"
60
- version:
60
+ required_ruby_version: !ruby/object:Gem::Requirement
61
+ none: false
62
+ requirements:
63
+ - - ! '>='
64
+ - !ruby/object:Gem::Version
65
+ version: '0'
66
+ required_rubygems_version: !ruby/object:Gem::Requirement
67
+ none: false
68
+ requirements:
69
+ - - ! '>='
70
+ - !ruby/object:Gem::Version
71
+ version: '0'
61
72
  requirements: []
62
-
63
73
  rubyforge_project:
64
- rubygems_version: 1.3.5
74
+ rubygems_version: 1.8.10
65
75
  signing_key:
66
76
  specification_version: 3
67
77
  summary: A Moneta wrapper for Ruby object persistence
68
- test_files:
69
- - spec/remember_spec.rb
78
+ test_files: []
data/README.md DELETED
@@ -1,53 +0,0 @@
1
- # Remember
2
-
3
- ![Remember](/jpignata/remember/raw/master/doc/remember.jpg)
4
-
5
- A simple object persistence wrapper for Moneta. Initialize Remember with any Moneta adapter and serialize any object that implements Ruby's marshal API.
6
-
7
- ## Adapters
8
-
9
- Moneta currently supports:
10
-
11
- * File store for xattr
12
- * Basic File Store
13
- * Memcache store
14
- * In-memory store
15
- * The xattrs in a file system
16
- * DataMapper
17
- * S3
18
- * Berkeley DB
19
- * Redis
20
- * SDBM
21
- * Tokyo
22
- * CouchDB
23
-
24
- ## Usage
25
-
26
- jp@populuxe:~/Projects/remember$ irb -r 'lib/remember' -r 'moneta/redis'
27
- >> r = Remember.new(Moneta::Redis)
28
- >> r["important_data"] = rand(100000000000000000000000)
29
- => 99924367975800373618177
30
- >> r["important_data"]
31
- => 99924367975800373618177
32
- >> r["config"] = { :setting => 'value', :other_setting => 'other value' }
33
-
34
- jp@populuxe:~/Projects/remember$ irb -r 'lib/remember' -r 'moneta/redis'
35
- >> r = Remember.new(Moneta::Redis)
36
- >> r["important_data"]
37
- => 99924367975800373618177
38
- >> r["config"]
39
- => {:setting=>"value", :other_setting=>"other value"}
40
-
41
- jp@populuxe:~/Projects/remember$ irb -r 'lib/remember' -r 'moneta/redis'
42
- >> r = Remember.new(Moneta::Redis)
43
- >> class Duck; def make_noise; "Quack!"; end; end
44
- >> d = Duck.new
45
- >> d.make_noise
46
- => "Quack!"
47
- >> r["duck"] = d
48
-
49
- jp@populuxe:~/Projects/remember$ irb -r 'lib/remember' -r 'moneta/redis'
50
- >> r = Remember.new(Moneta::Redis)
51
- >> class Duck; def make_noise; "Quack!"; end; end
52
- >> r["duck"].make_noise
53
- => "Quack!"
data/Rakefile DELETED
@@ -1,23 +0,0 @@
1
- require 'rake'
2
- require 'spec/rake/spectask'
3
-
4
- begin
5
- require 'jeweler'
6
- Jeweler::Tasks.new do |gemspec|
7
- gemspec.name = "remember"
8
- gemspec.summary = "A Moneta wrapper for Ruby object persistence"
9
- gemspec.description = "A Moneta wrapper for Ruby object persistence"
10
- gemspec.email = "john.pignata@gmail.com"
11
- gemspec.homepage = "http://github.com/jpignata/remember"
12
- gemspec.authors = ["John Pignata"]
13
- gemspec.add_dependency("moneta", "0.6.0")
14
- end
15
- Jeweler::GemcutterTasks.new
16
- rescue LoadError
17
- puts "Jeweler not available. Install it with: sudo gem install technicalpickles-jeweler -s http://gems.github.com"
18
- end
19
-
20
- Spec::Rake::SpecTask.new(:spec) do |t|
21
- t.spec_files = FileList['spec/*_spec.rb']
22
- t.spec_opts = ['--color', '--format specdoc']
23
- end
data/VERSION DELETED
@@ -1 +0,0 @@
1
- 0.0.2
Binary file
@@ -1,131 +0,0 @@
1
- require File.join(File.dirname(__FILE__), '../lib/remember')
2
- require 'moneta/memory'
3
-
4
- describe Remember do
5
- before do
6
- @r = Remember.new(Moneta::Memory)
7
- end
8
-
9
- describe "#[]=" do
10
- it "returns the Object originally passed into it" do
11
- @r["enum_sizes"] = ['xs', 's', 'm', 'l'].should == ['xs', 's', 'm', 'l']
12
- end
13
-
14
- it "persists object values and behaviors" do
15
- class Bridge < Struct.new(:name, :year)
16
- def to_s; "#{name} opened in #{year}"; end
17
- def opened?; year < Time.now.year; end
18
- end
19
-
20
- @r["brooklyn"] = Bridge.new("Brooklyn Bridge", 1883)
21
- @r["verrazano"] = Bridge.new("Verrazano-Narrows Bridge", 1964)
22
-
23
- @r["brooklyn"].to_s.should == "Brooklyn Bridge opened in 1883"
24
- @r["verrazano"].year.should == 1964
25
- @r["brooklyn"].opened?.should be_true
26
- end
27
- end
28
-
29
- describe "#[]" do
30
- context "a given key exists" do
31
- it "returns a deserialized object" do
32
- @r["thirteen"] = 13
33
- @r["thirteen"].should == 13
34
- end
35
- end
36
-
37
- context "a given key does not exist" do
38
- it "returns nil" do
39
- @r["pretend"].should be_nil
40
- end
41
- end
42
- end
43
-
44
- describe "#delete" do
45
- context "a given key exists" do
46
- it "returns the object that the key contained after deletion" do
47
- @r["thirteen"] = 13
48
- @r.delete("thirteen").should == 13
49
- @r["thirteen"].should be_nil
50
- end
51
- end
52
-
53
- context "a given key does not exist" do
54
- it "returns nil" do
55
- @r.delete("pretend").should be_nil
56
- end
57
- end
58
- end
59
-
60
- describe "#key?" do
61
- context "a key that exists" do
62
- it "returns true" do
63
- @r["real"] = true
64
- @r.key?("real").should be_true
65
- end
66
- end
67
-
68
- context "a key that does not exist" do
69
- it "returns false" do
70
- @r.key?("pretend").should be_false
71
- end
72
- end
73
- end
74
-
75
- describe "#has_key?" do
76
- it "is an alias for key?" do
77
- @r.has_key?("pretend").should == @r.key?("pretend")
78
- end
79
- end
80
-
81
- describe "#clear" do
82
- it "clears all persisted objects" do
83
- @r["do"] = 1
84
- @r["ray"] = 2
85
- @r["egon"] = 3
86
- @r.clear
87
- @r.key?("ray").should be_false
88
- end
89
- end
90
-
91
- describe "#store" do
92
- it "saves an object to key and sets an expiration in seconds" do
93
- @r.store("zuul", :zuul, :expires_in => 60).should == :zuul
94
- end
95
- end
96
-
97
- describe "#update_key" do
98
- context "a key that exists" do
99
- it "updates object identified by key and sets an expiration in seconds and returns the new expiration time" do
100
- @r["gozer"] = :gozer
101
- @r.update_key("gozer", :expires_in => 60).to_i.should == Time.now.to_i + 60
102
- end
103
- end
104
-
105
- context "a key that does not exist" do
106
- it "returns nil" do
107
- @r.update_key("slimer", :expires_in => 60).should be_nil
108
- end
109
- end
110
- end
111
-
112
- describe "#fetch" do
113
- context "a key that exists" do
114
- it "fetches the object" do
115
- @r["some_data"] = 123
116
- @r.fetch("some_data", :expires_in => 120) { 456 }.should == 123
117
- end
118
- end
119
-
120
- context "a key that does not exist" do
121
- it "executes a block and then stores the resulting object" do
122
- @r["resource_intensive_data"].should be_nil
123
- data = @r.fetch("resource_intensive_data", :expires_in => 120) do
124
- ['calculation']
125
- end
126
- data.should == ['calculation']
127
- @r["resource_intensive_data"].should == ['calculation']
128
- end
129
- end
130
- end
131
- end