tracked_job 0.0.2
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 +15 -0
- data/Rakefile +23 -0
- data/app/controllers/tracked/application_controller.rb +4 -0
- data/app/helpers/tracked/application_helper.rb +4 -0
- data/config/routes.rb +2 -0
- data/db/migrate/20140128084338_create_tracked_job.rb +15 -0
- data/lib/tracked/delayed_job/plugin.rb +30 -0
- data/lib/tracked/delayed_job/tracked_delay_proxy.rb +15 -0
- data/lib/tracked/job.rb +31 -0
- data/lib/tracked_job/engine.rb +5 -0
- data/lib/tracked_job/version.rb +3 -0
- data/lib/tracked_job.rb +10 -0
- metadata +127 -0
checksums.yaml
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
ZjVlYzllOGEzM2FiNzNjODljNWMxZTg2YTI5ODFlODQwODA4YjIyNA==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
YTQyMjMzNjJlNTVlY2E0OGU2YzUxYThmMjdhMWVkMTQ4Mjc0YjRmNg==
|
7
|
+
SHA512:
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
ZGY5MjQzNDA0M2RkMDZiN2U5OTAwYmE0ZGEwNjAyZjdhNTA5NDc2ZjI1OGZk
|
10
|
+
YmQ5YWQwMDA2M2NmYWZkZGNiMGQwMmVlOGVjOGUyODc2M2I3MGU4M2ZkMjEx
|
11
|
+
ODZkYWM1MDcxN2U0ZGMwYWJhNjcwNTk2NGNkNmUyMTIwMWYwYjQ=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
YzQwYzE1OTc0YjhiYzg1MTM1ODRkMWQ1YzkyNjVkNjAzNDFkODkzMjExMzU1
|
14
|
+
YzgwM2MwZTg0ZmE1ODU4NWQxMWRkYzZhMjkyZTE5NWNmNzI0ODIzY2MzYjgz
|
15
|
+
YmNmYjhlZDRjZGUwNWY0MTUxYzIyNDZkYTM4NDJiOTdlYTE5ZDM=
|
data/Rakefile
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
begin
|
2
|
+
require 'bundler/setup'
|
3
|
+
rescue LoadError
|
4
|
+
puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
|
5
|
+
end
|
6
|
+
|
7
|
+
require 'rdoc/task'
|
8
|
+
|
9
|
+
RDoc::Task.new(:rdoc) do |rdoc|
|
10
|
+
rdoc.rdoc_dir = 'rdoc'
|
11
|
+
rdoc.title = 'Tracked'
|
12
|
+
rdoc.options << '--line-numbers'
|
13
|
+
rdoc.rdoc_files.include('README.rdoc')
|
14
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
15
|
+
end
|
16
|
+
|
17
|
+
APP_RAKEFILE = File.expand_path("../spec/dummy/Rakefile", __FILE__)
|
18
|
+
load 'rails/tasks/engine.rake'
|
19
|
+
|
20
|
+
|
21
|
+
|
22
|
+
Bundler::GemHelper.install_tasks
|
23
|
+
|
data/config/routes.rb
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
class CreateTrackedJob < ActiveRecord::Migration
|
2
|
+
def change
|
3
|
+
create_table :tracked_jobs do |t|
|
4
|
+
t.string :uuid, limit: 36, null: false
|
5
|
+
t.references :job, null: false
|
6
|
+
t.boolean :success
|
7
|
+
t.text :result
|
8
|
+
t.datetime :started_at
|
9
|
+
t.timestamps
|
10
|
+
end
|
11
|
+
|
12
|
+
add_index :tracked_jobs, :uuid, unique: true
|
13
|
+
add_index :tracked_jobs, :job_id, unique: true
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module Tracked
|
2
|
+
module DelayedJob
|
3
|
+
class Plugin < Delayed::Plugin
|
4
|
+
module Perform
|
5
|
+
def perform
|
6
|
+
@tracked_job.start!
|
7
|
+
begin
|
8
|
+
result = super
|
9
|
+
rescue Exception => exception
|
10
|
+
@tracked_job.fail!(exception.message)
|
11
|
+
raise
|
12
|
+
end
|
13
|
+
@tracked_job.succeed!(result)
|
14
|
+
return result
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
callbacks do |lifecycle|
|
19
|
+
lifecycle.before(:invoke_job) do |job|
|
20
|
+
tracked_job = Tracked::Job.find_by(job_id: job.id)
|
21
|
+
if tracked_job.present?
|
22
|
+
payload = job.payload_object
|
23
|
+
payload.instance_variable_set(:@tracked_job, tracked_job)
|
24
|
+
payload.extend Perform
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module Delayed
|
2
|
+
class TrackedDelayProxy < Delayed::DelayProxy
|
3
|
+
def method_missing(method, *args)
|
4
|
+
job = super
|
5
|
+
tracked_job = ::Tracked::Job.generate(job.id)
|
6
|
+
tracked_job
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
module MessageSending
|
11
|
+
def tracked_delay(options = {})
|
12
|
+
TrackedDelayProxy.new(PerformableMethod, self, options)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
data/lib/tracked/job.rb
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
module Tracked
|
2
|
+
class Job < ActiveRecord::Base
|
3
|
+
self.table_name = "tracked_jobs"
|
4
|
+
|
5
|
+
serialize :result
|
6
|
+
|
7
|
+
def self.generate(job_id)
|
8
|
+
uuid = SecureRandom.uuid
|
9
|
+
self.create!(job_id: job_id, uuid: uuid)
|
10
|
+
end
|
11
|
+
|
12
|
+
def start!
|
13
|
+
self.update_attributes!(started_at: Time.now)
|
14
|
+
end
|
15
|
+
|
16
|
+
def succeed!(result)
|
17
|
+
self.update_attributes!(success: true, result: result)
|
18
|
+
end
|
19
|
+
|
20
|
+
def fail!(result)
|
21
|
+
self.update_attributes!(success: false, result: result)
|
22
|
+
end
|
23
|
+
|
24
|
+
def status
|
25
|
+
return :created if started_at.nil?
|
26
|
+
return :started if success.nil?
|
27
|
+
return :success if success
|
28
|
+
:failed
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
data/lib/tracked_job.rb
ADDED
metadata
ADDED
@@ -0,0 +1,127 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: tracked_job
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.2
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Ludvig Dickman
|
8
|
+
- Jenny Olsson
|
9
|
+
- Avidity
|
10
|
+
autorequire:
|
11
|
+
bindir: bin
|
12
|
+
cert_chain: []
|
13
|
+
date: 2014-02-03 00:00:00.000000000 Z
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: rails
|
17
|
+
requirement: !ruby/object:Gem::Requirement
|
18
|
+
requirements:
|
19
|
+
- - ~>
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 4.0.0
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
requirements:
|
26
|
+
- - ~>
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
version: 4.0.0
|
29
|
+
- !ruby/object:Gem::Dependency
|
30
|
+
name: delayed_job
|
31
|
+
requirement: !ruby/object:Gem::Requirement
|
32
|
+
requirements:
|
33
|
+
- - '='
|
34
|
+
- !ruby/object:Gem::Version
|
35
|
+
version: 4.0.0
|
36
|
+
type: :runtime
|
37
|
+
prerelease: false
|
38
|
+
version_requirements: !ruby/object:Gem::Requirement
|
39
|
+
requirements:
|
40
|
+
- - '='
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: 4.0.0
|
43
|
+
- !ruby/object:Gem::Dependency
|
44
|
+
name: delayed_job_active_record
|
45
|
+
requirement: !ruby/object:Gem::Requirement
|
46
|
+
requirements:
|
47
|
+
- - '='
|
48
|
+
- !ruby/object:Gem::Version
|
49
|
+
version: 4.0.0
|
50
|
+
type: :runtime
|
51
|
+
prerelease: false
|
52
|
+
version_requirements: !ruby/object:Gem::Requirement
|
53
|
+
requirements:
|
54
|
+
- - '='
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
version: 4.0.0
|
57
|
+
- !ruby/object:Gem::Dependency
|
58
|
+
name: sqlite3
|
59
|
+
requirement: !ruby/object:Gem::Requirement
|
60
|
+
requirements:
|
61
|
+
- - ! '>='
|
62
|
+
- !ruby/object:Gem::Version
|
63
|
+
version: '0'
|
64
|
+
type: :development
|
65
|
+
prerelease: false
|
66
|
+
version_requirements: !ruby/object:Gem::Requirement
|
67
|
+
requirements:
|
68
|
+
- - ! '>='
|
69
|
+
- !ruby/object:Gem::Version
|
70
|
+
version: '0'
|
71
|
+
- !ruby/object:Gem::Dependency
|
72
|
+
name: rspec-rails
|
73
|
+
requirement: !ruby/object:Gem::Requirement
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
78
|
+
type: :development
|
79
|
+
prerelease: false
|
80
|
+
version_requirements: !ruby/object:Gem::Requirement
|
81
|
+
requirements:
|
82
|
+
- - ! '>='
|
83
|
+
- !ruby/object:Gem::Version
|
84
|
+
version: '0'
|
85
|
+
description: Adds the ability to track backgrounds jobs. Currently only for delayed_job.
|
86
|
+
email:
|
87
|
+
- code@avidity.se
|
88
|
+
executables: []
|
89
|
+
extensions: []
|
90
|
+
extra_rdoc_files: []
|
91
|
+
files:
|
92
|
+
- Rakefile
|
93
|
+
- app/controllers/tracked/application_controller.rb
|
94
|
+
- app/helpers/tracked/application_helper.rb
|
95
|
+
- config/routes.rb
|
96
|
+
- db/migrate/20140128084338_create_tracked_job.rb
|
97
|
+
- lib/tracked/delayed_job/plugin.rb
|
98
|
+
- lib/tracked/delayed_job/tracked_delay_proxy.rb
|
99
|
+
- lib/tracked/job.rb
|
100
|
+
- lib/tracked_job.rb
|
101
|
+
- lib/tracked_job/engine.rb
|
102
|
+
- lib/tracked_job/version.rb
|
103
|
+
homepage: http://github.com/avidity/tracked_job
|
104
|
+
licenses:
|
105
|
+
- MIT
|
106
|
+
metadata: {}
|
107
|
+
post_install_message:
|
108
|
+
rdoc_options: []
|
109
|
+
require_paths:
|
110
|
+
- lib
|
111
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
112
|
+
requirements:
|
113
|
+
- - ! '>='
|
114
|
+
- !ruby/object:Gem::Version
|
115
|
+
version: '0'
|
116
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
117
|
+
requirements:
|
118
|
+
- - ! '>='
|
119
|
+
- !ruby/object:Gem::Version
|
120
|
+
version: '0'
|
121
|
+
requirements: []
|
122
|
+
rubyforge_project:
|
123
|
+
rubygems_version: 2.2.1
|
124
|
+
signing_key:
|
125
|
+
specification_version: 4
|
126
|
+
summary: Track background jobs
|
127
|
+
test_files: []
|