ozy 0.0.5 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. data/README.md +2 -1
  2. data/lib/ozy.rb +12 -1
  3. data/spec/ozy_spec.rb +18 -0
  4. metadata +6 -8
data/README.md CHANGED
@@ -1,7 +1,8 @@
1
1
  Ozymandias
2
2
  =
3
3
 
4
- **Ozy** is a simple Hash subclass that persists itself to Redis, if you'll let it. This provides a clean interface to storing data in Redis without calling all those crazy Redis commands. Of course, Ozy also supports those commands, so go nuts.
4
+ **Ozy** is a simple Hash subclass that persists itself to Redis, if you'll let it. This provides a clean interface to storing data in Redis without calling
5
+ all those crazy Redis commands. Of course, Ozy also supports those commands, so go nuts.
5
6
 
6
7
  Install
7
8
  ==
data/lib/ozy.rb CHANGED
@@ -5,6 +5,10 @@ class Ozy < ::Hash
5
5
  class KeyError < ::StandardError; end
6
6
 
7
7
  class << self
8
+ def connect(*args)
9
+ self.connection = Redis.new(*args)
10
+ end
11
+
8
12
  def connection
9
13
  @connection ||= ::Redis.new
10
14
  end
@@ -98,7 +102,14 @@ class Ozy < ::Hash
98
102
  if @options[:key] && self.class.connection.respond_to?(method)
99
103
  self.class.connection.send(method, *[@options[:key], args].flatten)
100
104
  else
101
- super
105
+ method = method.to_s
106
+ if method.chomp!('=')
107
+ self[method] = args.first
108
+ elsif args.empty?
109
+ self[method.to_s] || self[method.to_sym]
110
+ else
111
+ super
112
+ end
102
113
  end
103
114
  end
104
115
 
data/spec/ozy_spec.rb CHANGED
@@ -99,6 +99,24 @@ describe Ozy do
99
99
  }.should raise_error
100
100
  end
101
101
 
102
+ it "should catch accessors for existing keys" do
103
+ ozy = Ozy.create("ozy", :foo => :bar)
104
+ ozy.foo.should == :bar
105
+ end
106
+
107
+ it "should translate strings and symbols for existing keys" do
108
+ ozy = Ozy.create("ozy", 'foo' => :bar)
109
+ ozy.foo.should == :bar
110
+ end
111
+
112
+ it "should allow users to use arbitrary writers that didn't previously exist" do
113
+ ozy = Ozy.create("ozy", :foo => :bar)
114
+ ozy.baz.should be_nil
115
+ ozy.baz = "BOOM!"
116
+ ozy.baz.should == "BOOM!"
117
+ end
118
+
119
+
102
120
  it "should preserve symbols and other fun stuff" do
103
121
  ozy = Ozy.create("ozy", :foo => {:bar => [:baz]})
104
122
  Ozy.get("ozy").should == {:foo => {:bar => [:baz]}}
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ozy
3
3
  version: !ruby/object:Gem::Version
4
- hash: 21
5
- prerelease: false
4
+ hash: 19
5
+ prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 5
10
- version: 0.0.5
9
+ - 6
10
+ version: 0.0.6
11
11
  platform: ruby
12
12
  authors:
13
13
  - Flip Sasser
@@ -15,8 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-01-04 00:00:00 -05:00
19
- default_executable:
18
+ date: 2011-08-23 00:00:00 Z
20
19
  dependencies:
21
20
  - !ruby/object:Gem::Dependency
22
21
  name: rcov
@@ -80,7 +79,6 @@ files:
80
79
  - README.md
81
80
  - spec/ozy_spec.rb
82
81
  - spec/spec_helper.rb
83
- has_rdoc: true
84
82
  homepage: http://github.com/flipsasser/ozymandias
85
83
  licenses: []
86
84
 
@@ -110,7 +108,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
110
108
  requirements: []
111
109
 
112
110
  rubyforge_project:
113
- rubygems_version: 1.3.7
111
+ rubygems_version: 1.8.8
114
112
  signing_key:
115
113
  specification_version: 3
116
114
  summary: A Redis-backed Hash class that can be used like a very (very, very) simple ORM