ohm 0.0.4 → 0.0.5

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.
@@ -1,5 +1,5 @@
1
1
  Ohm
2
- ============
2
+ ===
3
3
 
4
4
  Object-hash mapping library for Redis.
5
5
 
@@ -16,11 +16,12 @@ Usage
16
16
 
17
17
  require 'ohm'
18
18
 
19
- $redis = Redis.new
19
+ Ohm.connect
20
20
 
21
21
  class Event < Ohm::Model
22
22
  attribute :name
23
23
  set :participants
24
+ list :comments
24
25
 
25
26
  def validate
26
27
  assert_present :name
@@ -30,6 +31,11 @@ Usage
30
31
  event = Event.create(:name => "Ruby Tuesday")
31
32
  event.participants << "Michel Martens"
32
33
  event.participants << "Damian Janowski"
34
+ event.participants #=> ["Damian Janowski", "Michel Martens"]
35
+
36
+ event.comments << "Very interesting event!"
37
+ event.comments << "Agree"
38
+ event.comments #=> ["Very interesting event!", "Agree"]
33
39
 
34
40
  another_event = Event.new
35
41
  another_event.valid? #=> false
@@ -40,7 +46,7 @@ Usage
40
46
  another_event.errors #=> [[:name, :empty]]
41
47
 
42
48
  another_event.name = "Ruby Lunch"
43
- another_event.save #=> true
49
+ another_event.create #=> true
44
50
 
45
51
  Installation
46
52
  ------------
data/lib/ohm.rb CHANGED
@@ -65,8 +65,8 @@ module Ohm
65
65
  include Ohm::Validations
66
66
 
67
67
  def assert_unique(attrs)
68
- index_key = index_key_for(attrs, read_locals(attrs))
69
- assert(db.scard(index_key).zero? || db.sismember(index_key, id), [attrs, :not_unique])
68
+ index_key = index_key_for(Array(attrs), read_locals(Array(attrs)))
69
+ assert(db.scard(index_key).zero? || db.sismember(index_key, id), [Array(attrs), :not_unique])
70
70
  end
71
71
  end
72
72
 
@@ -103,7 +103,7 @@ module Ohm
103
103
  end
104
104
 
105
105
  def self.index(attrs)
106
- indices << attrs
106
+ indices << Array(attrs)
107
107
  end
108
108
 
109
109
  def self.attr_list_reader(name)
@@ -151,15 +151,14 @@ module Ohm
151
151
  call_command(argv)
152
152
  end
153
153
 
154
-
155
154
  # Wrap raw_call_command to handle reconnection on socket error. We
156
155
  # try to reconnect just one time, otherwise let the error araise.
157
156
  def call_command(argv)
158
157
  connect unless connected?
159
- raw_call_command(argv)
158
+ raw_call_command(argv.dup)
160
159
  rescue Errno::ECONNRESET
161
160
  reconnect
162
- raw_call_command(argv)
161
+ raw_call_command(argv.dup)
163
162
  end
164
163
 
165
164
  def raw_call_command(argv)
@@ -1,13 +1,10 @@
1
1
  require "rubygems"
2
2
  require "bench"
3
3
  require File.dirname(__FILE__) + "/../lib/ohm"
4
- require "redis"
5
4
 
6
5
  Ohm.connect(:port => 6381)
7
6
  Ohm.flush
8
7
 
9
- $r = Redis.new(:port => 6381)
10
-
11
8
  class Event < Ohm::Model
12
9
  attribute :name
13
10
  set :attendees
@@ -24,10 +21,6 @@ benchmark "add to set with ohm redis" do
24
21
  Ohm.redis.sadd("foo", 1)
25
22
  end
26
23
 
27
- benchmark "add to set with redis" do
28
- $r.set_add("foo", 1)
29
- end
30
-
31
24
  benchmark "add to set with ohm" do
32
25
  event.attendees << 1
33
26
  end
@@ -41,17 +34,7 @@ benchmark "retrieve a set of two members with ohm redis" do
41
34
  Ohm.redis.smembers("bar")
42
35
  end
43
36
 
44
- $r.set_add("bar", 1)
45
- $r.set_add("bar", 2)
46
-
47
- benchmark "retrieve a set of two members with redis" do
48
- $r.set_add("bar", 3)
49
- $r.set_delete("bar", 3)
50
- $r.set_members("bar")
51
- end
52
-
53
37
  Ohm.redis.del("Event:#{event.id}:attendees")
54
- $r.delete("Event:#{event.id}:attendees")
55
38
 
56
39
  event.attendees << 1
57
40
  event.attendees << 2
@@ -1 +1 @@
1
- 26947
1
+ 6304
@@ -4,7 +4,7 @@ class IndicesTest < Test::Unit::TestCase
4
4
  class User < Ohm::Model
5
5
  attribute :email
6
6
 
7
- index [:email]
7
+ index :email
8
8
  end
9
9
 
10
10
  context "A model with an indexed attribute" do
@@ -23,7 +23,7 @@ class IndicesTest < Test::Unit::TestCase
23
23
  @user1.email = "baz"
24
24
  @user1.save
25
25
 
26
- assert_equal [], User.find(:email, "foo").to_a
26
+ assert_equal [], User.find(:email, "foo")
27
27
  assert_equal [@user1], User.find(:email, "baz")
28
28
  end
29
29
 
@@ -5,7 +5,7 @@ class ValidationsTest < Test::Unit::TestCase
5
5
  attribute :name
6
6
  attribute :place
7
7
 
8
- index [:name]
8
+ index :name
9
9
  index [:name, :place]
10
10
 
11
11
  def validate
@@ -48,7 +48,7 @@ class ValidationsTest < Test::Unit::TestCase
48
48
  context "That must have a unique name" do
49
49
  should "fail when the value already exists" do
50
50
  def @event.validate
51
- assert_unique [:name]
51
+ assert_unique :name
52
52
  end
53
53
 
54
54
  Event.create(:name => "foo")
metadata CHANGED
@@ -1,20 +1,23 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ohm
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
- - Michel Martens, Damian Janowski
7
+ - Michel Martens
8
+ - Damian Janowski
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
12
 
12
- date: 2009-03-13 00:00:00 -02:00
13
+ date: 2009-06-19 00:00:00 -03:00
13
14
  default_executable:
14
15
  dependencies: []
15
16
 
16
- description:
17
- email: michel@soveran.com
17
+ description: Ohm is a library that allows to store an object in Redis, a persistent key-value database. It includes an extensible list of validations and has very good performance.
18
+ email:
19
+ - michel@soveran.com
20
+ - djanowski@dimaion.com
18
21
  executables: []
19
22
 
20
23
  extensions: []
@@ -38,8 +41,10 @@ files:
38
41
  - test/test.conf
39
42
  - test/test_helper.rb
40
43
  - test/validations_test.rb
41
- has_rdoc: false
44
+ has_rdoc: true
42
45
  homepage: http://github.com/soveran/ohm
46
+ licenses: []
47
+
43
48
  post_install_message:
44
49
  rdoc_options: []
45
50
 
@@ -59,10 +64,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
59
64
  version:
60
65
  requirements: []
61
66
 
62
- rubyforge_project:
63
- rubygems_version: 1.3.1
67
+ rubyforge_project: ohm
68
+ rubygems_version: 1.3.4
64
69
  signing_key:
65
- specification_version: 2
70
+ specification_version: 3
66
71
  summary: Object-hash mapping library for Redis.
67
72
  test_files: []
68
73