resque-meta 1.0.2 → 1.0.3

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -22,6 +22,7 @@ For example:
22
22
  meta0.enqueued_at # => 'Wed May 19 13:42:41 -0600 2010'
23
23
  meta0.meta_id # => '03c9e1a045ad012dd20500264a19273c'
24
24
  meta0['foo'] = 'bar' # => 'bar'
25
+ meta0.save
25
26
 
26
27
  # later
27
28
  meta1 = MyJob.get_meta('03c9e1a045ad012dd20500264a19273c')
@@ -20,6 +20,7 @@ module Resque
20
20
  @expire_in = @job_class.expire_meta_in || 0
21
21
  end
22
22
 
23
+ # Reload the metadata from the store
23
24
  def reload!
24
25
  if new_meta = job_class.get_meta(meta_id)
25
26
  @data = new_meta.data
@@ -27,6 +28,7 @@ module Resque
27
28
  self
28
29
  end
29
30
 
31
+ # Save the metadata
30
32
  def save
31
33
  job_class.store_meta(self)
32
34
  self
@@ -41,22 +43,24 @@ module Resque
41
43
  end
42
44
 
43
45
  def start!
44
- self['started_at'] = to_time_format_str(Time.now)
46
+ @started_at = Time.now
47
+ self['started_at'] = to_time_format_str(@started_at)
45
48
  save
46
49
  end
47
50
 
48
51
  def started_at
49
- from_time_format_str('started_at')
52
+ @started_at ||= from_time_format_str('started_at')
50
53
  end
51
54
 
52
55
  def finish!
53
56
  data['succeeded'] = true unless data.has_key?('succeeded')
54
- self['finished_at'] = to_time_format_str(Time.now)
57
+ @finished_at = Time.now
58
+ self['finished_at'] = to_time_format_str(@finished_at)
55
59
  save
56
60
  end
57
61
 
58
62
  def finished_at
59
- from_time_format_str('finished_at')
63
+ @finished_at ||= from_time_format_str('finished_at')
60
64
  end
61
65
 
62
66
  def expire_at
@@ -68,11 +72,11 @@ module Resque
68
72
  end
69
73
 
70
74
  def enqueued?
71
- started_at ? false : true
75
+ !started?
72
76
  end
73
77
 
74
78
  def working?
75
- started_at && !finished_at ? true : false
79
+ started? && !finished?
76
80
  end
77
81
 
78
82
  def started?
@@ -97,12 +101,12 @@ module Resque
97
101
  end
98
102
 
99
103
  def seconds_enqueued
100
- (started? ? started_at : Time.now.to_i) - enqueued_at.to_i
104
+ (started_at || Time.now).to_f - enqueued_at.to_f
101
105
  end
102
106
 
103
107
  def seconds_processing
104
108
  if started?
105
- (finished? ? finished_at : Time.now.to_i) - started_at.to_i
109
+ (finished_at || Time.now).to_f - started_at.to_f
106
110
  else
107
111
  0
108
112
  end
@@ -1,7 +1,7 @@
1
1
  module Resque
2
2
  module Plugins
3
3
  module Meta
4
- Version = '1.0.2'
4
+ Version = '1.0.3'
5
5
  end
6
6
  end
7
7
  end
@@ -24,6 +24,7 @@ module Resque
24
24
  # meta0.enqueued_at # => 'Wed May 19 13:42:41 -0600 2010'
25
25
  # meta0.meta_id # => '03c9e1a045ad012dd20500264a19273c'
26
26
  # meta0['foo'] = 'bar' # => 'bar'
27
+ # meta0.save
27
28
  #
28
29
  # # later
29
30
  # meta1 = MyJob.get_meta('03c9e1a045ad012dd20500264a19273c')
data/test/meta_test.rb CHANGED
@@ -55,7 +55,7 @@ class MetaTest < Test::Unit::TestCase
55
55
  end
56
56
 
57
57
  def test_meta_version
58
- assert_equal '1.0.2', Resque::Plugins::Meta::Version
58
+ assert_equal '1.0.3', Resque::Plugins::Meta::Version
59
59
  end
60
60
 
61
61
  def test_lint
@@ -76,8 +76,10 @@ class MetaTest < Test::Unit::TestCase
76
76
  assert_not_nil meta
77
77
  assert_not_nil meta.meta_id
78
78
  assert meta.enqueued_at.to_f > now.to_f, "#{meta.enqueued_at} should be after #{now}"
79
+ assert meta.seconds_enqueued > 0.0, "seconds_enqueued should be greater than zero"
79
80
  assert meta.enqueued?
80
81
  assert !meta.started?
82
+ assert_equal 0, meta.seconds_processing
81
83
  assert !meta.finished?
82
84
  assert_nil meta['foo']
83
85
  assert_equal Resque::Plugins::Meta::Metadata, meta.class
@@ -96,6 +98,8 @@ class MetaTest < Test::Unit::TestCase
96
98
  assert meta.finished?, 'Job should be finished'
97
99
  assert meta.succeeded?, 'Job should have succeeded'
98
100
  assert !meta.enqueued?
101
+ assert meta.seconds_enqueued > 0.0, "seconds_enqueued should be greater than zero"
102
+ assert meta.seconds_processing > 0.0, "seconds_processing should be greater than zero"
99
103
  assert_equal 'bar', meta['foo'], "'foo' not found in #{meta.inspect}"
100
104
  end
101
105
 
@@ -152,4 +156,14 @@ class MetaTest < Test::Unit::TestCase
152
156
  assert meta.failed?
153
157
  assert !meta.succeeded?
154
158
  end
159
+
160
+ def test_saving_additional_metadata
161
+ meta = MetaJob.enqueue('stuff')
162
+ meta['foo'] = 'bar'
163
+ meta.save
164
+
165
+ # later
166
+ meta = MetaJob.get_meta(meta.meta_id)
167
+ assert_equal 'bar', meta['foo']
168
+ end
155
169
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: resque-meta
3
3
  version: !ruby/object:Gem::Version
4
- hash: 19
5
- prerelease: false
4
+ hash: 17
5
+ prerelease:
6
6
  segments:
7
7
  - 1
8
8
  - 0
9
- - 2
10
- version: 1.0.2
9
+ - 3
10
+ version: 1.0.3
11
11
  platform: ruby
12
12
  authors:
13
13
  - Lee Marlow
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-11-03 00:00:00 -06:00
18
+ date: 2011-02-10 00:00:00 -07:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -53,6 +53,7 @@ description: |
53
53
  meta0.enqueued_at # => 'Wed May 19 13:42:41 -0600 2010'
54
54
  meta0.meta_id # => '03c9e1a045ad012dd20500264a19273c'
55
55
  meta0['foo'] = 'bar' # => 'bar'
56
+ meta0.save
56
57
 
57
58
  # later
58
59
  meta1 = MyJob.get_meta('03c9e1a045ad012dd20500264a19273c')
@@ -108,7 +109,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
108
109
  requirements: []
109
110
 
110
111
  rubyforge_project:
111
- rubygems_version: 1.3.7
112
+ rubygems_version: 1.4.2
112
113
  signing_key:
113
114
  specification_version: 3
114
115
  summary: A Resque plugin for storing job metadata.