ohm 1.3.1 → 1.3.2
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.
- checksums.yaml +6 -14
- data/CHANGELOG +8 -0
- data/README.md +1 -1
- data/lib/ohm.rb +12 -5
- data/ohm.gemspec +1 -1
- data/test/uniques.rb +2 -2
- metadata +7 -7
checksums.yaml
CHANGED
@@ -1,15 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
metadata.gz: !binary |-
|
9
|
-
NGY2YmU4YTE0NWQ3N2E4Y2QyYWViZDBiOWUwM2NmMTFhNjY5YjNmMTIxNmE3
|
10
|
-
OTRhNmJiMjQ2ZjcwNDQwMjU4YTQ3ZWRjZmJjMmZlOTIxMTY3OTA5ZGJkNDYy
|
11
|
-
Yjg0ZDllODdkNjM4NGFmNWM4YzY5MTQ0ODBlYTNkYjhkODhmOGE=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
ZTJiYWNjNGUxZTk1ZTUxNTQ5Nzk2NTZmOGQ1YTAzY2QzY2Y2NDk4MGE5MDU3
|
14
|
-
Zjk1ODY3MThlYTdmOGZhZWFiY2QyNzg1MTg2YjA5NjFlODE4NDNjNmE4N2Mx
|
15
|
-
MmJlNjg3ZjViYzc4NmU5ZGNlNmU1MmEwMmNkMDBhOTg1ZDUyZjk=
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: a0015a7962f27903ee712ca027655b3f01722f64
|
4
|
+
data.tar.gz: 06c1b5a4101dae29fbabd19d6804a0eafbb3ccd3
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 6ea9f1a1f47e0863607e97f6c6d3e5c2673a355fadca8baa88f30636028b404a08dce69a26d9489272896abd734ccdcd3535eebe4807ae740a8a4b37a6b8a8b0
|
7
|
+
data.tar.gz: 88ee32f78b6ce100d028ecfc1dfe5d61e4e9ec6933c0261df4828d4c63835108aba23b30ea69259717e0cae5f06df8aa31ac1aadc0f1200d8d2bac255a9c249e
|
data/CHANGELOG
CHANGED
@@ -1,3 +1,11 @@
|
|
1
|
+
(unreleased)
|
2
|
+
|
3
|
+
- Fetching a batch of objects is now done in batches of 1000 objects at
|
4
|
+
a time. If you are iterating over large collections, this change should
|
5
|
+
provide a significant performance boost both in used memory and total
|
6
|
+
execution time.
|
7
|
+
- MutableSet#<< is now an alias for #add.
|
8
|
+
|
1
9
|
1.3.1
|
2
10
|
|
3
11
|
- Improve memory consumption when indexing persisted attributes.
|
data/README.md
CHANGED
@@ -31,7 +31,7 @@ These are libraries in other languages that were inspired by Ohm.
|
|
31
31
|
Articles and Presentations
|
32
32
|
--------------------------
|
33
33
|
|
34
|
-
* [
|
34
|
+
* [Simplicity](http://files.soveran.com/simplicity)
|
35
35
|
* [How to Redis](http://www.paperplanes.de/2009/10/30/how_to_redis.html)
|
36
36
|
* [Redis and Ohm](http://carlopecchia.eu/blog/2010/04/30/redis-and-ohm-part1/)
|
37
37
|
* [Ohm (Redis ORM)](http://blog.s21g.com/articles/1717) (Japanese)
|
data/lib/ohm.rb
CHANGED
@@ -145,7 +145,9 @@ module Ohm
|
|
145
145
|
|
146
146
|
def each
|
147
147
|
if block_given?
|
148
|
-
|
148
|
+
ids.each_slice(1000) do |slice|
|
149
|
+
fetch(slice).each { |e| yield(e) }
|
150
|
+
end
|
149
151
|
else
|
150
152
|
Enumerator.new(self, :each)
|
151
153
|
end
|
@@ -503,6 +505,8 @@ module Ohm
|
|
503
505
|
db.sadd(key, model.id)
|
504
506
|
end
|
505
507
|
|
508
|
+
alias_method :<<, :add
|
509
|
+
|
506
510
|
# Remove a model directly from the set.
|
507
511
|
#
|
508
512
|
# Example:
|
@@ -783,7 +787,7 @@ module Ohm
|
|
783
787
|
raise IndexNotFound unless uniques.include?(att)
|
784
788
|
|
785
789
|
id = db.hget(key[:uniques][att], val)
|
786
|
-
id
|
790
|
+
new(:id => id).load! if id
|
787
791
|
end
|
788
792
|
|
789
793
|
# Find values in indexed fields.
|
@@ -1343,7 +1347,8 @@ module Ohm
|
|
1343
1347
|
transaction do |t|
|
1344
1348
|
_uniques = nil
|
1345
1349
|
_indices = nil
|
1346
|
-
|
1350
|
+
existing_indices = nil
|
1351
|
+
existing_uniques = nil
|
1347
1352
|
|
1348
1353
|
t.watch(*_unique_keys)
|
1349
1354
|
|
@@ -1352,7 +1357,8 @@ module Ohm
|
|
1352
1357
|
t.watch(key[:_uniques]) if model.uniques.any?
|
1353
1358
|
|
1354
1359
|
t.read do
|
1355
|
-
|
1360
|
+
existing_indices = _read_attributes(model.indices) if model.indices.any?
|
1361
|
+
existing_uniques = _read_attributes(model.uniques) if model.uniques.any?
|
1356
1362
|
_uniques = db.hgetall(key[:_uniques])
|
1357
1363
|
_indices = db.smembers(key[:_indices])
|
1358
1364
|
end
|
@@ -1360,7 +1366,8 @@ module Ohm
|
|
1360
1366
|
t.write do
|
1361
1367
|
_delete_uniques(_uniques)
|
1362
1368
|
_delete_indices(_indices)
|
1363
|
-
|
1369
|
+
_delete_existing_uniques(existing_uniques)
|
1370
|
+
_delete_existing_indices(existing_indices)
|
1364
1371
|
model.collections.each { |e| db.del(key[e]) }
|
1365
1372
|
db.srem(model.key[:all], id)
|
1366
1373
|
db.del(key[:counters])
|
data/ohm.gemspec
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = "ohm"
|
3
|
-
s.version = "1.3.
|
3
|
+
s.version = "1.3.2"
|
4
4
|
s.summary = %{Object-hash mapping library for Redis.}
|
5
5
|
s.description = %Q{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.}
|
6
6
|
s.authors = ["Michel Martens", "Damian Janowski", "Cyril David"]
|
data/test/uniques.rb
CHANGED
@@ -64,7 +64,7 @@ test "removes the previous index when changing" do
|
|
64
64
|
u.update(:email => "d@d.com")
|
65
65
|
|
66
66
|
assert_equal nil, User.with(:email, "c@c.com")
|
67
|
-
assert_equal nil, User.key[:
|
67
|
+
assert_equal nil, User.key[:uniques][:email].hget("c@c.com")
|
68
68
|
assert_equal u, User.with(:email, "d@d.com")
|
69
69
|
end
|
70
70
|
|
@@ -72,7 +72,7 @@ test "removes the previous index when deleting" do |u|
|
|
72
72
|
u.delete
|
73
73
|
|
74
74
|
assert_equal nil, User.with(:email, "a@a.com")
|
75
|
-
assert_equal nil, User.key[:
|
75
|
+
assert_equal nil, User.key[:uniques][:email].hget("a@a.com")
|
76
76
|
end
|
77
77
|
|
78
78
|
test "unique virtual attribute" do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ohm
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.3.
|
4
|
+
version: 1.3.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michel Martens
|
@@ -10,20 +10,20 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2013-04-
|
13
|
+
date: 2013-04-20 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: redis
|
17
17
|
requirement: !ruby/object:Gem::Requirement
|
18
18
|
requirements:
|
19
|
-
- -
|
19
|
+
- - '>='
|
20
20
|
- !ruby/object:Gem::Version
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
25
|
requirements:
|
26
|
-
- -
|
26
|
+
- - '>='
|
27
27
|
- !ruby/object:Gem::Version
|
28
28
|
version: '0'
|
29
29
|
- !ruby/object:Gem::Dependency
|
@@ -133,17 +133,17 @@ require_paths:
|
|
133
133
|
- lib
|
134
134
|
required_ruby_version: !ruby/object:Gem::Requirement
|
135
135
|
requirements:
|
136
|
-
- -
|
136
|
+
- - '>='
|
137
137
|
- !ruby/object:Gem::Version
|
138
138
|
version: '0'
|
139
139
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
140
140
|
requirements:
|
141
|
-
- -
|
141
|
+
- - '>='
|
142
142
|
- !ruby/object:Gem::Version
|
143
143
|
version: '0'
|
144
144
|
requirements: []
|
145
145
|
rubyforge_project: ohm
|
146
|
-
rubygems_version: 2.0.
|
146
|
+
rubygems_version: 2.0.3
|
147
147
|
signing_key:
|
148
148
|
specification_version: 4
|
149
149
|
summary: Object-hash mapping library for Redis.
|