resque-job-tracking 0.0.2 → 0.0.3

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.
data/Gemfile CHANGED
@@ -7,4 +7,5 @@ gem 'json'
7
7
 
8
8
  group :test do
9
9
  gem 'cubbyhole'
10
+ gem 'rake'
10
11
  end
data/Rakefile CHANGED
@@ -1,2 +1,11 @@
1
1
  #!/usr/bin/env rake
2
2
  require "bundler/gem_tasks"
3
+ require 'rspec/core/rake_task'
4
+
5
+ desc 'Default: run specs.'
6
+ task :default => :spec
7
+
8
+ desc "Run specs"
9
+ RSpec::Core::RakeTask.new do |t|
10
+ # Put spec opts in a file named .rspec in root
11
+ end
@@ -1,7 +1,7 @@
1
1
  module Resque
2
2
  module Plugins
3
3
  module JobTracking
4
- VERSION = "0.0.2"
4
+ VERSION = "0.0.3"
5
5
  end
6
6
  end
7
7
  end
@@ -61,6 +61,11 @@ module Resque
61
61
 
62
62
  def perform_with_job_tracking(meta, meta_id, *jobargs, &block)
63
63
  identifiers = track(*jobargs)
64
+ if self.respond_to?(:extra_meta_on_start)
65
+ meta = get_meta(meta_id)
66
+ meta.data.merge!(self.extra_meta_on_start)
67
+ meta.save
68
+ end
64
69
  identifiers.each do |ident|
65
70
  Resque.redis.srem("#{ident}:pending", meta_id)
66
71
  Resque.redis.sadd("#{ident}:running", meta_id)
@@ -74,6 +74,24 @@ class TypicalProblemJob < BaseJobWithPerform
74
74
  end
75
75
 
76
76
 
77
+ class JobOnHost < BaseJobWithPerform
78
+
79
+ def self.track(account_id)
80
+ [Account.get(account_id).job_tracking_identifier]
81
+ end
82
+
83
+ def perform(account_id)
84
+ end
85
+
86
+ def self.extra_meta_on_start
87
+ {
88
+ 'hostname' => "foo",
89
+ 'pid' => $$
90
+ }
91
+ end
92
+
93
+ end
94
+
77
95
  describe TypicalProblemJob do
78
96
  include WorkerSupport
79
97
 
@@ -153,4 +171,19 @@ describe TypicalProblemJob do
153
171
  meta_data['job_args'].should eq [account.id, 'dontcare']
154
172
  end
155
173
 
174
+ it "should store the hostname and pid" do
175
+ account = Account.create
176
+ JobOnHost.enqueue(account.id)
177
+ account.pending_jobs.size.should eq 1
178
+ meta_id = account.pending_jobs.first
179
+ meta_data = JobOnHost.get_meta(meta_id)
180
+ meta_data["hostname"].should be_nil
181
+ meta_data["pid"].should be_nil
182
+ work_until_finished
183
+ meta_data = JobOnHost.get_meta(meta_id)
184
+ meta_data["hostname"].should eq "foo"
185
+ meta_data["pid"].should_not be_nil
186
+ meta_data["pid"].should_not eq $$
187
+ end
188
+
156
189
  end
metadata CHANGED
@@ -1,57 +1,78 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: resque-job-tracking
3
- version: !ruby/object:Gem::Version
4
- version: 0.0.2
3
+ version: !ruby/object:Gem::Version
4
+ hash: 25
5
5
  prerelease:
6
+ segments:
7
+ - 0
8
+ - 0
9
+ - 3
10
+ version: 0.0.3
6
11
  platform: ruby
7
- authors:
12
+ authors:
8
13
  - Jacob Burkhart
9
14
  autorequire:
10
15
  bindir: bin
11
16
  cert_chain: []
12
- date: 2011-12-03 00:00:00.000000000 Z
13
- dependencies:
14
- - !ruby/object:Gem::Dependency
15
- name: resque
16
- requirement: &70216190504860 !ruby/object:Gem::Requirement
17
+
18
+ date: 2012-03-19 00:00:00 Z
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ version_requirements: &id001 !ruby/object:Gem::Requirement
17
22
  none: false
18
- requirements:
19
- - - ! '>='
20
- - !ruby/object:Gem::Version
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ hash: 55
27
+ segments:
28
+ - 1
29
+ - 8
30
+ - 0
21
31
  version: 1.8.0
32
+ requirement: *id001
22
33
  type: :runtime
23
34
  prerelease: false
24
- version_requirements: *70216190504860
25
- - !ruby/object:Gem::Dependency
26
- name: resque-meta
27
- requirement: &70216190483140 !ruby/object:Gem::Requirement
35
+ name: resque
36
+ - !ruby/object:Gem::Dependency
37
+ version_requirements: &id002 !ruby/object:Gem::Requirement
28
38
  none: false
29
- requirements:
30
- - - ! '>='
31
- - !ruby/object:Gem::Version
39
+ requirements:
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ hash: 23
43
+ segments:
44
+ - 1
45
+ - 0
46
+ - 0
32
47
  version: 1.0.0
48
+ requirement: *id002
33
49
  type: :runtime
34
50
  prerelease: false
35
- version_requirements: *70216190483140
36
- - !ruby/object:Gem::Dependency
37
- name: rspec
38
- requirement: &70216190484760 !ruby/object:Gem::Requirement
51
+ name: resque-meta
52
+ - !ruby/object:Gem::Dependency
53
+ version_requirements: &id003 !ruby/object:Gem::Requirement
39
54
  none: false
40
- requirements:
41
- - - ! '>='
42
- - !ruby/object:Gem::Version
43
- version: '0'
55
+ requirements:
56
+ - - ">="
57
+ - !ruby/object:Gem::Version
58
+ hash: 3
59
+ segments:
60
+ - 0
61
+ version: "0"
62
+ requirement: *id003
44
63
  type: :development
45
64
  prerelease: false
46
- version_requirements: *70216190484760
47
- description: A resque plugin for tracking jobs and their state (pending, running,
48
- failed) based on some originating entity
49
- email:
65
+ name: rspec
66
+ description: A resque plugin for tracking jobs and their state (pending, running, failed) based on some originating entity
67
+ email:
50
68
  - jacob@engineyard.com
51
69
  executables: []
70
+
52
71
  extensions: []
72
+
53
73
  extra_rdoc_files: []
54
- files:
74
+
75
+ files:
55
76
  - .gitignore
56
77
  - Gemfile
57
78
  - LICENSE
@@ -65,32 +86,40 @@ files:
65
86
  - spec/spec_helper.rb
66
87
  - spec/support/worker_support.rb
67
88
  - spec/tracking_spec.rb
68
- homepage: ''
89
+ homepage: ""
69
90
  licenses: []
91
+
70
92
  post_install_message:
71
93
  rdoc_options: []
72
- require_paths:
94
+
95
+ require_paths:
73
96
  - lib
74
- required_ruby_version: !ruby/object:Gem::Requirement
97
+ required_ruby_version: !ruby/object:Gem::Requirement
75
98
  none: false
76
- requirements:
77
- - - ! '>='
78
- - !ruby/object:Gem::Version
79
- version: '0'
80
- required_rubygems_version: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ hash: 3
103
+ segments:
104
+ - 0
105
+ version: "0"
106
+ required_rubygems_version: !ruby/object:Gem::Requirement
81
107
  none: false
82
- requirements:
83
- - - ! '>='
84
- - !ruby/object:Gem::Version
85
- version: '0'
108
+ requirements:
109
+ - - ">="
110
+ - !ruby/object:Gem::Version
111
+ hash: 3
112
+ segments:
113
+ - 0
114
+ version: "0"
86
115
  requirements: []
116
+
87
117
  rubyforge_project:
88
118
  rubygems_version: 1.8.10
89
119
  signing_key:
90
120
  specification_version: 3
91
- summary: A resque plugin for tracking jobs and their state (pending, running, failed)
92
- based on some originating entity
93
- test_files:
121
+ summary: A resque plugin for tracking jobs and their state (pending, running, failed) based on some originating entity
122
+ test_files:
94
123
  - spec/basic_spec.rb
95
124
  - spec/spec_helper.rb
96
125
  - spec/support/worker_support.rb