ohm 2.0.0.alpha2 → 2.0.0.alpha3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/ohm.rb +10 -5
- data/lib/ohm/lua/delete.lua +5 -5
- data/ohm.gemspec +1 -1
- data/test/model.rb +13 -0
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b3734bd99776bff0786c42047b43dbeed799d907
|
4
|
+
data.tar.gz: f3883cf4aa7fea58b716b5e5dd0796458bfda388
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fa9b8566cf79aa0470f1236c056bcd60f6968f2e3d50f39512431860758a3335363e32a1876610fde9d5a5ca4a72c7602a96779b83e8357c10088cdcb11fab93
|
7
|
+
data.tar.gz: cbe87bc0b7eb78ec264ab0e28dd48a36387b2f8325a8ec4d5d26666bda6f9755aeaefc1208687fabf56523865be9b9d96c70308137feda6260d21ab13223dab9
|
data/lib/ohm.rb
CHANGED
@@ -838,7 +838,7 @@ module Ohm
|
|
838
838
|
# to do it, you'll receive an Ohm::MissingID error.
|
839
839
|
#
|
840
840
|
def self.set(name, model)
|
841
|
-
|
841
|
+
track(name)
|
842
842
|
|
843
843
|
define_method name do
|
844
844
|
model = Utils.const(self.class, model)
|
@@ -868,7 +868,7 @@ module Ohm
|
|
868
868
|
# to do it, you'll receive an Ohm::MissingID error.
|
869
869
|
#
|
870
870
|
def self.list(name, model)
|
871
|
-
|
871
|
+
track(name)
|
872
872
|
|
873
873
|
define_method name do
|
874
874
|
model = Utils.const(self.class, model)
|
@@ -1033,6 +1033,11 @@ module Ohm
|
|
1033
1033
|
end
|
1034
1034
|
end
|
1035
1035
|
|
1036
|
+
# Keep track of `key[name]` and remove when deleting the object.
|
1037
|
+
def self.track(name)
|
1038
|
+
tracked << name unless tracked.include?(name)
|
1039
|
+
end
|
1040
|
+
|
1036
1041
|
# An Ohm::Set wrapper for Model.key[:all].
|
1037
1042
|
def self.all
|
1038
1043
|
Set.new(key[:all], key, self)
|
@@ -1279,7 +1284,7 @@ module Ohm
|
|
1279
1284
|
"key" => key
|
1280
1285
|
}.to_msgpack,
|
1281
1286
|
uniques.to_msgpack,
|
1282
|
-
model.
|
1287
|
+
model.tracked.to_msgpack
|
1283
1288
|
)
|
1284
1289
|
|
1285
1290
|
return self
|
@@ -1344,8 +1349,8 @@ module Ohm
|
|
1344
1349
|
@counters ||= []
|
1345
1350
|
end
|
1346
1351
|
|
1347
|
-
def self.
|
1348
|
-
@
|
1352
|
+
def self.tracked
|
1353
|
+
@tracked ||= []
|
1349
1354
|
end
|
1350
1355
|
|
1351
1356
|
def self.attributes
|
data/lib/ohm/lua/delete.lua
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
local model = cmsgpack.unpack(ARGV[1])
|
2
2
|
local uniques = cmsgpack.unpack(ARGV[2])
|
3
|
-
local
|
3
|
+
local tracked = cmsgpack.unpack(ARGV[3])
|
4
4
|
|
5
5
|
local function remove_indices(model)
|
6
6
|
local memo = model.key .. ":_indices"
|
@@ -23,9 +23,9 @@ local function remove_uniques(model, uniques)
|
|
23
23
|
end
|
24
24
|
end
|
25
25
|
|
26
|
-
local function
|
27
|
-
for _,
|
28
|
-
local key = model.key .. ":" ..
|
26
|
+
local function remove_tracked(model, tracked)
|
27
|
+
for _, tracked_key in ipairs(tracked) do
|
28
|
+
local key = model.key .. ":" .. tracked_key
|
29
29
|
|
30
30
|
redis.call("DEL", key)
|
31
31
|
end
|
@@ -45,7 +45,7 @@ end
|
|
45
45
|
|
46
46
|
remove_indices(model)
|
47
47
|
remove_uniques(model, uniques)
|
48
|
-
|
48
|
+
remove_tracked(model, tracked)
|
49
49
|
delete(model)
|
50
50
|
|
51
51
|
return model.id
|
data/ohm.gemspec
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = "ohm"
|
3
|
-
s.version = "2.0.0.
|
3
|
+
s.version = "2.0.0.alpha3"
|
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/model.rb
CHANGED
@@ -350,6 +350,7 @@ test "no leftover keys" do
|
|
350
350
|
class ::Foo < Ohm::Model
|
351
351
|
attribute :name
|
352
352
|
index :name
|
353
|
+
track :notes
|
353
354
|
end
|
354
355
|
|
355
356
|
assert_equal [], Ohm.redis.call("KEYS", "*")
|
@@ -361,6 +362,18 @@ test "no leftover keys" do
|
|
361
362
|
|
362
363
|
Foo[1].delete
|
363
364
|
assert ["Foo:id"] == Ohm.redis.call("KEYS", "*")
|
365
|
+
|
366
|
+
Foo.create(:name => "Baz")
|
367
|
+
|
368
|
+
Ohm.redis.call("SET", Foo[2].key[:notes], "something")
|
369
|
+
|
370
|
+
expected = %w[Foo:2:_indices Foo:2 Foo:all Foo:id
|
371
|
+
Foo:indices:name:Baz Foo:2:notes]
|
372
|
+
|
373
|
+
assert_equal expected.sort, Ohm.redis.call("KEYS", "*").sort
|
374
|
+
|
375
|
+
Foo[2].delete
|
376
|
+
assert ["Foo:id"] == Ohm.redis.call("KEYS", "*")
|
364
377
|
end
|
365
378
|
|
366
379
|
# Listing
|
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: 2.0.0.
|
4
|
+
version: 2.0.0.alpha3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michel Martens
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2013-04
|
13
|
+
date: 2013-05-04 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: redic
|
@@ -140,7 +140,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
140
140
|
version: 1.3.1
|
141
141
|
requirements: []
|
142
142
|
rubyforge_project: ohm
|
143
|
-
rubygems_version: 2.0.
|
143
|
+
rubygems_version: 2.0.3
|
144
144
|
signing_key:
|
145
145
|
specification_version: 4
|
146
146
|
summary: Object-hash mapping library for Redis.
|