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.
@@ -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
@@ -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', which requires everything, or you
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.
@@ -22,7 +22,7 @@ module Ohm
22
22
  # end
23
23
  # end
24
24
  module Callbacks
25
- def save!
25
+ def save
26
26
  is_new = new?
27
27
 
28
28
  before_create if is_new
@@ -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)) }
@@ -43,19 +43,29 @@ module Ohm
43
43
  end
44
44
 
45
45
  def delete
46
- db.multi do
47
- model.all.key.srem(id)
48
- model.deleted.key.sadd(id)
49
- set :deleted, DELETED_FLAG
50
- end
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
- db.multi do
55
- model.all.key.sadd(id)
56
- model.deleted.key.srem(id)
57
- set :deleted, nil
58
- end
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].sismember(id)
81
+ super || redis.call("SISMEMBER", key[:deleted], id) == 1
72
82
  end
73
83
  end
74
84
  end
@@ -23,7 +23,7 @@ module Ohm
23
23
  model.attribute :updated_at, DataTypes::Type::Timestamp
24
24
  end
25
25
 
26
- def save!
26
+ def save
27
27
  self.created_at = Time.now.utc.to_i if new?
28
28
  self.updated_at = Time.now.utc.to_i
29
29
 
@@ -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
- super do |t|
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
- if current_version != _version
13
- raise Ohm::VersionConflict.new(attributes)
14
- end
10
+ if current_version != _version
11
+ raise Ohm::VersionConflict.new(attributes)
12
+ end
15
13
 
16
- self._version = current_version + 1
17
- end
14
+ self._version = current_version + 1
18
15
 
19
- yield t if block_given?
20
- end
16
+ super
21
17
  end
22
18
  end
23
19
 
@@ -1,10 +1,10 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = "ohm-contrib"
3
- s.version = "1.2"
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.ucron@gmail.com"
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", "~> 1.2"
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
@@ -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
@@ -35,7 +35,7 @@ private
35
35
  end
36
36
 
37
37
  def after_save
38
- comments.key.sadd(Comment.create.id)
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.key.hget(:bought_at)
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.key.hget(:date_released)
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.key.hget(:sizes)
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.key.hget(:stores)
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.key.hget(:price)
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.key.hget(:rating)
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 "false", p.key.hget(:published)
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.key.hget(:comments)
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
@@ -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.sadd(comment.id)
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.sadd(comment.id)
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: '1.2'
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: 2012-08-30 00:00:00.000000000 Z
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: '1.2'
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: '1.2'
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.ucron@gmail.com
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: '0'
99
+ version: 1.3.1
124
100
  requirements: []
125
101
  rubyforge_project: ohm-contrib
126
- rubygems_version: 1.8.23
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.