ohm-contrib 1.2 → 2.0.0.alpha2

Sign up to get free protection for your applications and to get access to all the features.
@@ -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.