ohm-contrib 1.2 → 2.0.0.alpha2
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 +7 -0
- data/README.markdown +1 -1
- data/lib/ohm/callbacks.rb +1 -1
- data/lib/ohm/datatypes.rb +1 -1
- data/lib/ohm/softdelete.rb +21 -11
- data/lib/ohm/timestamps.rb +1 -1
- data/lib/ohm/versioned.rb +7 -11
- data/ohm-contrib.gemspec +3 -4
- data/test/helper.rb +0 -3
- data/test/plugin.rb +9 -9
- data/test/scope.rb +2 -2
- metadata +16 -40
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: bcc41d31e8b5341e8fd904569405b3d9b34117d9
|
4
|
+
data.tar.gz: 106c327eeb443fe0e4231740dad105b9ab18ffa2
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: fb14c183b55886fccec06e3178c889b1e8f85d5f7072ee15493bf7cfcc512ae70fa311257b57586e911dfd3cde264208386bb571aecd55860178acda4aa77388
|
7
|
+
data.tar.gz: 43c40485f12e12a49b61e45fb84b0045afa0a42874d16509ffb0c1ff458085ad0a6f9552cfd1e2aa8eb78ce7a690eb6093e348a546e78618ca60a22ef0309781
|
data/README.markdown
CHANGED
@@ -207,7 +207,7 @@ The following lists the major changes:
|
|
207
207
|
See [scrivener][scrivener] instead.
|
208
208
|
5. `Ohm::Boundaries` has been removed.
|
209
209
|
6. Ohm::Contrib no longer uses `autoload`. You can either
|
210
|
-
`require 'ohm/contrib'
|
210
|
+
`require 'ohm/contrib'`, which requires everything, or you
|
211
211
|
can `require ohm/datatypes` for example if you want to cherry
|
212
212
|
pick your requires.
|
213
213
|
7. `Ohm::Callbacks` no longer provides macro style callbacks, i.e.
|
data/lib/ohm/callbacks.rb
CHANGED
data/lib/ohm/datatypes.rb
CHANGED
@@ -10,7 +10,7 @@ module Ohm
|
|
10
10
|
Integer = lambda { |x| x.to_i }
|
11
11
|
Decimal = lambda { |x| BigDecimal(x.to_s) }
|
12
12
|
Float = lambda { |x| x.to_f }
|
13
|
-
Symbol = lambda { |x| x.to_sym }
|
13
|
+
Symbol = lambda { |x| x && x.to_sym }
|
14
14
|
Boolean = lambda { |x| Ohm::DataTypes.bool(x) }
|
15
15
|
Time = lambda { |t| t && (t.kind_of?(::Time) ? t : ::Time.parse(t)) }
|
16
16
|
Date = lambda { |d| d && (d.kind_of?(::Date) ? d : ::Date.parse(d)) }
|
data/lib/ohm/softdelete.rb
CHANGED
@@ -43,19 +43,29 @@ module Ohm
|
|
43
43
|
end
|
44
44
|
|
45
45
|
def delete
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
46
|
+
redis.queue("MULTI")
|
47
|
+
redis.queue("SREM", model.all.key, id)
|
48
|
+
redis.queue("SADD", model.deleted.key, id)
|
49
|
+
redis.queue("HSET", key, :deleted, DELETED_FLAG)
|
50
|
+
redis.queue("EXEC")
|
51
|
+
redis.commit
|
52
|
+
|
53
|
+
self.deleted = DELETED_FLAG
|
54
|
+
|
55
|
+
return self
|
51
56
|
end
|
52
57
|
|
53
58
|
def restore
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
+
redis.queue("MULTI")
|
60
|
+
redis.queue("SADD", model.all.key, id)
|
61
|
+
redis.queue("SREM", model.deleted.key, id)
|
62
|
+
redis.queue("HDEL", key, :deleted)
|
63
|
+
redis.queue("EXEC")
|
64
|
+
redis.commit
|
65
|
+
|
66
|
+
self.deleted = nil
|
67
|
+
|
68
|
+
return self
|
59
69
|
end
|
60
70
|
|
61
71
|
def deleted?
|
@@ -68,7 +78,7 @@ module Ohm
|
|
68
78
|
end
|
69
79
|
|
70
80
|
def exists?(id)
|
71
|
-
super || key[:deleted]
|
81
|
+
super || redis.call("SISMEMBER", key[:deleted], id) == 1
|
72
82
|
end
|
73
83
|
end
|
74
84
|
end
|
data/lib/ohm/timestamps.rb
CHANGED
data/lib/ohm/versioned.rb
CHANGED
@@ -4,20 +4,16 @@ module Ohm
|
|
4
4
|
model.attribute :_version, lambda { |x| x.to_i }
|
5
5
|
end
|
6
6
|
|
7
|
-
def save
|
8
|
-
|
9
|
-
t.read do |store|
|
10
|
-
current_version = key.hget(:_version).to_i
|
7
|
+
def save
|
8
|
+
current_version = new? ? 0 : redis.call("HGET", key, :_version).to_i
|
11
9
|
|
12
|
-
|
13
|
-
|
14
|
-
|
10
|
+
if current_version != _version
|
11
|
+
raise Ohm::VersionConflict.new(attributes)
|
12
|
+
end
|
15
13
|
|
16
|
-
|
17
|
-
end
|
14
|
+
self._version = current_version + 1
|
18
15
|
|
19
|
-
|
20
|
-
end
|
16
|
+
super
|
21
17
|
end
|
22
18
|
end
|
23
19
|
|
data/ohm-contrib.gemspec
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = "ohm-contrib"
|
3
|
-
s.version = "
|
3
|
+
s.version = "2.0.0.alpha2"
|
4
4
|
s.summary = %{A collection of decoupled drop-in modules for Ohm.}
|
5
5
|
s.description = %{Includes a couple of core functions such as callbacks, timestamping, typecasting and lots of generic validation routines.}
|
6
6
|
s.author = "Cyril David"
|
7
|
-
s.email = "cyx
|
7
|
+
s.email = "cyx@cyx.is"
|
8
8
|
s.homepage = "http://github.com/cyx/ohm-contrib"
|
9
9
|
|
10
10
|
s.specification_version = 2 if s.respond_to? :specification_version=
|
@@ -21,9 +21,8 @@ Gem::Specification.new do |s|
|
|
21
21
|
s.require_paths = ["lib"]
|
22
22
|
s.rubyforge_project = "ohm-contrib"
|
23
23
|
|
24
|
-
s.add_dependency "ohm", "
|
24
|
+
s.add_dependency "ohm", "2.0.0.alpha2"
|
25
25
|
|
26
26
|
s.add_development_dependency "cutest"
|
27
|
-
s.add_development_dependency "redis"
|
28
27
|
s.add_development_dependency "override"
|
29
28
|
end
|
data/test/helper.rb
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
$:.unshift(File.expand_path("../lib", File.dirname(__FILE__)))
|
2
2
|
|
3
3
|
require "cutest"
|
4
|
-
require "redis"
|
5
4
|
|
6
5
|
if ENV["SCRIPTED"]
|
7
6
|
require "ohm/scripted"
|
@@ -12,8 +11,6 @@ end
|
|
12
11
|
require "ohm/contrib"
|
13
12
|
require "override"
|
14
13
|
|
15
|
-
Ohm.connect :host => "localhost", :port => 6379, :db => 1
|
16
|
-
|
17
14
|
NOW = Time.utc(2010, 5, 12)
|
18
15
|
|
19
16
|
include Override
|
data/test/plugin.rb
CHANGED
@@ -35,7 +35,7 @@ private
|
|
35
35
|
end
|
36
36
|
|
37
37
|
def after_save
|
38
|
-
comments.key
|
38
|
+
redis.call("SADD", comments.key, Comment.create.id)
|
39
39
|
end
|
40
40
|
end
|
41
41
|
|
@@ -185,7 +185,7 @@ scope do
|
|
185
185
|
assert p.bought_at.kind_of?(Time)
|
186
186
|
assert_equal time, p.bought_at
|
187
187
|
|
188
|
-
assert_equal "2011-11-22 00:00:00 UTC", p.
|
188
|
+
assert_equal "2011-11-22 00:00:00 UTC", p.get(:bought_at)
|
189
189
|
assert_equal "2011-11-22 00:00:00 UTC", p.bought_at.to_s
|
190
190
|
end
|
191
191
|
|
@@ -201,7 +201,7 @@ scope do
|
|
201
201
|
|
202
202
|
p = Product[p.id]
|
203
203
|
assert_equal Date.new(2011, 11, 22), p.date_released
|
204
|
-
assert_equal "2011-11-22", p.
|
204
|
+
assert_equal "2011-11-22", p.get(:date_released)
|
205
205
|
assert_equal "2011-11-22", p.date_released.to_s
|
206
206
|
end
|
207
207
|
|
@@ -214,7 +214,7 @@ scope do
|
|
214
214
|
|
215
215
|
p = Product[p.id]
|
216
216
|
assert_equal sizes, p.sizes
|
217
|
-
assert_equal %Q[{"XS":1,"S":2,"L":3}], p.
|
217
|
+
assert_equal %Q[{"XS":1,"S":2,"L":3}], p.get(:sizes)
|
218
218
|
assert_equal %Q[{"XS":1,"S":2,"L":3}], p.sizes.to_s
|
219
219
|
end
|
220
220
|
|
@@ -227,7 +227,7 @@ scope do
|
|
227
227
|
|
228
228
|
p = Product[p.id]
|
229
229
|
assert_equal stores, p.stores
|
230
|
-
assert_equal %Q(["walmart","marshalls","jcpenny"]), p.
|
230
|
+
assert_equal %Q(["walmart","marshalls","jcpenny"]), p.get(:stores)
|
231
231
|
assert_equal %Q(["walmart","marshalls","jcpenny"]), p.stores.to_s
|
232
232
|
end
|
233
233
|
|
@@ -243,7 +243,7 @@ scope do
|
|
243
243
|
|
244
244
|
p = Product[p.id]
|
245
245
|
assert_equal 0.001, p.price
|
246
|
-
assert_equal "0.1E-2", p.
|
246
|
+
assert_equal "0.1E-2", p.get(:price)
|
247
247
|
end
|
248
248
|
|
249
249
|
test "Type::Float" do
|
@@ -253,7 +253,7 @@ scope do
|
|
253
253
|
p.save
|
254
254
|
p = Product[p.id]
|
255
255
|
assert_equal 4.5, p.rating
|
256
|
-
assert_equal "4.5", p.
|
256
|
+
assert_equal "4.5", p.get(:rating)
|
257
257
|
end
|
258
258
|
|
259
259
|
test "Type::Boolean" do
|
@@ -269,7 +269,7 @@ scope do
|
|
269
269
|
p.save
|
270
270
|
|
271
271
|
p = Product[p.id]
|
272
|
-
assert_equal
|
272
|
+
assert_equal nil, p.get(:published)
|
273
273
|
assert_equal false, p.published
|
274
274
|
end
|
275
275
|
|
@@ -293,7 +293,7 @@ scope do
|
|
293
293
|
p = Product[p.id]
|
294
294
|
|
295
295
|
assert_equal comments, p.comments
|
296
|
-
assert_equal %Q(["Awesome!","Good product","Great."]), p.
|
296
|
+
assert_equal %Q(["Awesome!","Good product","Great."]), p.get(:comments)
|
297
297
|
assert_equal %Q(["Awesome!","Good product","Great."]), p.comments.to_s
|
298
298
|
end
|
299
299
|
end
|
data/test/scope.rb
CHANGED
@@ -34,7 +34,7 @@ end
|
|
34
34
|
test "allows custom methods for the defined scopes" do
|
35
35
|
post = Post.create
|
36
36
|
comment = Comment.create(:status => "approved")
|
37
|
-
post.comments.key
|
37
|
+
Post.redis.call("SADD", post.comments.key, comment.id)
|
38
38
|
|
39
39
|
assert post.comments.approved.is_a?(Ohm::MultiSet)
|
40
40
|
assert post.comments.approved.include?(comment)
|
@@ -43,7 +43,7 @@ end
|
|
43
43
|
test "allows custom methods to be included from a module" do
|
44
44
|
post = Post.create
|
45
45
|
comment = Comment.create(:status => "rejected")
|
46
|
-
post.comments.key
|
46
|
+
Post.redis.call("SADD", post.comments.key, comment.id)
|
47
47
|
|
48
48
|
assert post.comments.rejected.is_a?(Ohm::MultiSet)
|
49
49
|
assert post.comments.rejected.include?(comment)
|
metadata
CHANGED
@@ -1,83 +1,60 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ohm-contrib
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
5
|
-
prerelease:
|
4
|
+
version: 2.0.0.alpha2
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Cyril David
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2013-04-30 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: ohm
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - '='
|
20
18
|
- !ruby/object:Gem::Version
|
21
|
-
version:
|
19
|
+
version: 2.0.0.alpha2
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- -
|
24
|
+
- - '='
|
28
25
|
- !ruby/object:Gem::Version
|
29
|
-
version:
|
26
|
+
version: 2.0.0.alpha2
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: cutest
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- -
|
31
|
+
- - '>='
|
36
32
|
- !ruby/object:Gem::Version
|
37
33
|
version: '0'
|
38
34
|
type: :development
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
|
-
- -
|
44
|
-
- !ruby/object:Gem::Version
|
45
|
-
version: '0'
|
46
|
-
- !ruby/object:Gem::Dependency
|
47
|
-
name: redis
|
48
|
-
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
|
-
requirements:
|
51
|
-
- - ! '>='
|
52
|
-
- !ruby/object:Gem::Version
|
53
|
-
version: '0'
|
54
|
-
type: :development
|
55
|
-
prerelease: false
|
56
|
-
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
|
-
requirements:
|
59
|
-
- - ! '>='
|
38
|
+
- - '>='
|
60
39
|
- !ruby/object:Gem::Version
|
61
40
|
version: '0'
|
62
41
|
- !ruby/object:Gem::Dependency
|
63
42
|
name: override
|
64
43
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
44
|
requirements:
|
67
|
-
- -
|
45
|
+
- - '>='
|
68
46
|
- !ruby/object:Gem::Version
|
69
47
|
version: '0'
|
70
48
|
type: :development
|
71
49
|
prerelease: false
|
72
50
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
51
|
requirements:
|
75
|
-
- -
|
52
|
+
- - '>='
|
76
53
|
- !ruby/object:Gem::Version
|
77
54
|
version: '0'
|
78
55
|
description: Includes a couple of core functions such as callbacks, timestamping,
|
79
56
|
typecasting and lots of generic validation routines.
|
80
|
-
email: cyx
|
57
|
+
email: cyx@cyx.is
|
81
58
|
executables: []
|
82
59
|
extensions: []
|
83
60
|
extra_rdoc_files: []
|
@@ -105,25 +82,24 @@ files:
|
|
105
82
|
- test/versioned.rb
|
106
83
|
homepage: http://github.com/cyx/ohm-contrib
|
107
84
|
licenses: []
|
85
|
+
metadata: {}
|
108
86
|
post_install_message:
|
109
87
|
rdoc_options: []
|
110
88
|
require_paths:
|
111
89
|
- lib
|
112
90
|
required_ruby_version: !ruby/object:Gem::Requirement
|
113
|
-
none: false
|
114
91
|
requirements:
|
115
|
-
- -
|
92
|
+
- - '>='
|
116
93
|
- !ruby/object:Gem::Version
|
117
94
|
version: '0'
|
118
95
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
119
|
-
none: false
|
120
96
|
requirements:
|
121
|
-
- -
|
97
|
+
- - '>'
|
122
98
|
- !ruby/object:Gem::Version
|
123
|
-
version:
|
99
|
+
version: 1.3.1
|
124
100
|
requirements: []
|
125
101
|
rubyforge_project: ohm-contrib
|
126
|
-
rubygems_version:
|
102
|
+
rubygems_version: 2.0.0
|
127
103
|
signing_key:
|
128
104
|
specification_version: 2
|
129
105
|
summary: A collection of decoupled drop-in modules for Ohm.
|