active_job_status 1.1.0 → 1.2.0
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 +4 -4
- data/.gitignore +1 -0
- data/.travis.yml +1 -1
- data/CHANGELOG.md +4 -0
- data/README.md +28 -3
- data/active_job_status.gemspec +2 -2
- data/lib/active_job_status.rb +11 -2
- data/lib/active_job_status/configure_redis.rb +1 -1
- data/lib/active_job_status/hooks.rb +19 -0
- data/lib/active_job_status/job_batch.rb +7 -9
- data/lib/active_job_status/job_status.rb +24 -6
- data/lib/active_job_status/job_tracker.rb +32 -8
- data/lib/active_job_status/redis.rb +9 -4
- data/lib/active_job_status/trackable_job.rb +3 -6
- data/lib/active_job_status/version.rb +1 -1
- data/spec/job_batch_spec.rb +5 -1
- data/spec/job_status_spec.rb +41 -14
- data/spec/job_tracker_spec.rb +39 -15
- data/spec/spec_helper.rb +1 -1
- data/spec/support/helpers.rb +3 -0
- data/spec/support/time_helpers.rb +1 -1
- data/spec/trackable_job_spec.rb +28 -9
- metadata +7 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5431b8cc6fed8a99592123c01fc9357cf4a46192
|
4
|
+
data.tar.gz: bd92db0a996e02e8ac1cabdb1af6d9e8092de953
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1e081751d977356a0315b686321c526e02ddc881b5e8624c59434a187bb40625aa452ca31188a6d7905550eadb93dd0c2f8c03d02390c3c3913f61e4da730480
|
7
|
+
data.tar.gz: 88df222fab4619634fe7073fc024b691c649bbd22df91c5261a9f304e3eaff9117f35ab2a05ff903e6c303a002650f5baa86884c8fd74758f51868a85daefb0f
|
data/.gitignore
CHANGED
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -46,6 +46,8 @@ ActiveJob status will detect Redis and use some nice optimizations.
|
|
46
46
|
|
47
47
|
# config/initializers/active_job_status.rb
|
48
48
|
ActiveJobStatus.store = ActiveSupport::Cache::RedisStore.new
|
49
|
+
# or if you are using https://github.com/sorentwo/readthis
|
50
|
+
ActiveJobStatus.store = ActiveSupport::Cache::ReadthisStore.new
|
49
51
|
|
50
52
|
## Usage
|
51
53
|
|
@@ -58,6 +60,24 @@ upgrading from versions < 1.0, you may need to update your code.*
|
|
58
60
|
class MyJob < ActiveJobStatus::TrackableJob
|
59
61
|
end
|
60
62
|
|
63
|
+
Or you can just include ActiveJobStatus::Hooks into your job if you are using
|
64
|
+
version 1.2 or greater. You might want to use this approach if you are using an
|
65
|
+
`ApplicationJob` and do not want all your jobs to be trackable.
|
66
|
+
|
67
|
+
class MyJob < ActiveJob::Base
|
68
|
+
include ActiveJobStatus::Hooks
|
69
|
+
end
|
70
|
+
|
71
|
+
or
|
72
|
+
|
73
|
+
class MyJob < ApplicationJob
|
74
|
+
include ActiveJobStatus::Hooks
|
75
|
+
end
|
76
|
+
|
77
|
+
class ApplicationJob < ActiveJob::Base
|
78
|
+
end
|
79
|
+
|
80
|
+
|
61
81
|
### Job Status
|
62
82
|
|
63
83
|
Check the status of a job using the ActiveJob job_id. Status of a job will only
|
@@ -65,8 +85,12 @@ be available for 72 hours after the job is queued. For right now you can't
|
|
65
85
|
change that.
|
66
86
|
|
67
87
|
my_job = MyJob.perform_later
|
68
|
-
ActiveJobStatus
|
69
|
-
|
88
|
+
job_status = ActiveJobStatus.fetch(my_job.job_id)
|
89
|
+
job_status.queued?
|
90
|
+
job_status.working?
|
91
|
+
job_status.completed?
|
92
|
+
job_status.status
|
93
|
+
# => :queued, :working, :completed, nil
|
70
94
|
|
71
95
|
### Job Batches
|
72
96
|
For job batches you an use any key you want (for example, you might use a
|
@@ -106,7 +130,8 @@ You can ask the batch for other bits of information:
|
|
106
130
|
You can also search for batches:
|
107
131
|
ActiveJobStatus::JobBatch.find(batch_id: my_key)
|
108
132
|
|
109
|
-
This method will return nil no associated job ids can be found, otherwise it will
|
133
|
+
This method will return nil if no associated job ids can be found, otherwise it will
|
134
|
+
This method will return nil no associated job ids can be found, otherwise it will
|
110
135
|
return an ActiveJobStatus::JobBatch object.
|
111
136
|
|
112
137
|
## Contributing
|
data/active_job_status.gemspec
CHANGED
@@ -23,8 +23,8 @@ Gem::Specification.new do |spec|
|
|
23
23
|
spec.add_development_dependency "rspec", "~> 3.0"
|
24
24
|
spec.add_development_dependency "codeclimate-test-reporter", "~> 0.4"
|
25
25
|
|
26
|
-
spec.add_runtime_dependency "activejob", "
|
27
|
-
spec.add_runtime_dependency "activesupport", "
|
26
|
+
spec.add_runtime_dependency "activejob", "> 4.2"
|
27
|
+
spec.add_runtime_dependency "activesupport", "> 4.2"
|
28
28
|
|
29
29
|
spec.post_install_message = "If updating from a version below 1.0, please note " \
|
30
30
|
"TrackabeJob is now namespaced inside of ActiveJob. " \
|
data/lib/active_job_status.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
require "active_job_status/hooks"
|
1
2
|
require "active_job_status/trackable_job"
|
2
3
|
require "active_job_status/job_tracker"
|
3
4
|
require "active_job_status/job_status"
|
@@ -7,7 +8,15 @@ require "active_job_status/configure_redis" if defined? Rails
|
|
7
8
|
|
8
9
|
module ActiveJobStatus
|
9
10
|
class << self
|
10
|
-
attr_accessor :store
|
11
|
+
attr_accessor :store, :expiration
|
12
|
+
|
13
|
+
def get_status(job_id)
|
14
|
+
fetch(job_id).status
|
15
|
+
end
|
16
|
+
|
17
|
+
def fetch(job_id)
|
18
|
+
status = store.fetch(job_id)
|
19
|
+
JobStatus.new(status)
|
20
|
+
end
|
11
21
|
end
|
12
22
|
end
|
13
|
-
|
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'rails'
|
2
2
|
class ConfigureRedis < Rails::Railtie
|
3
3
|
initializer "configure_redis.configure_rails_initializers" do
|
4
|
-
if defined? ActiveSupport::Cache::RedisStore
|
4
|
+
if defined? ActiveSupport::Cache::RedisStore || defined? ActiveSupport::Cache::ReadthisStore
|
5
5
|
require "active_job_status/redis"
|
6
6
|
end
|
7
7
|
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module ActiveJobStatus
|
2
|
+
module Hooks
|
3
|
+
def self.included(base)
|
4
|
+
base.class_eval do
|
5
|
+
before_enqueue { job_tracker.enqueued }
|
6
|
+
|
7
|
+
before_perform { job_tracker.performing }
|
8
|
+
|
9
|
+
after_perform { job_tracker.completed }
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
private
|
14
|
+
|
15
|
+
def job_tracker
|
16
|
+
@job_tracker ||= ActiveJobStatus::JobTracker.new(job_id: job_id)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -14,7 +14,7 @@ module ActiveJobStatus
|
|
14
14
|
|
15
15
|
def store_data(expire_in:)
|
16
16
|
ActiveJobStatus.store.delete(@batch_id) # delete any old batches
|
17
|
-
if ActiveJobStatus.store.class.to_s
|
17
|
+
if ["ActiveSupport::Cache::RedisStore", "ActiveSupport::Cache::ReadthisStore"].include? ActiveJobStatus.store.class.to_s
|
18
18
|
ActiveJobStatus.store.sadd(@batch_id, @job_ids)
|
19
19
|
ActiveJobStatus.store.expire(@batch_id, expire_in)
|
20
20
|
else
|
@@ -24,7 +24,7 @@ module ActiveJobStatus
|
|
24
24
|
|
25
25
|
def add_jobs(job_ids:)
|
26
26
|
@job_ids = @job_ids + job_ids
|
27
|
-
if ActiveJobStatus.store.class.to_s
|
27
|
+
if ["ActiveSupport::Cache::RedisStore", "ActiveSupport::Cache::ReadthisStore"].include? ActiveJobStatus.store.class.to_s
|
28
28
|
# Save an extra redis query and perform atomic operation
|
29
29
|
ActiveJobStatus.store.sadd(@batch_id, job_ids)
|
30
30
|
else
|
@@ -34,15 +34,14 @@ module ActiveJobStatus
|
|
34
34
|
end
|
35
35
|
|
36
36
|
def completed?
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
end
|
41
|
-
!job_statuses.any?
|
37
|
+
@job_ids.map do |job_id|
|
38
|
+
job_status = ActiveJobStatus.get_status(job_id)
|
39
|
+
job_status == nil || job_status == :completed
|
40
|
+
end.any?
|
42
41
|
end
|
43
42
|
|
44
43
|
def self.find(batch_id:)
|
45
|
-
if ActiveJobStatus.store.class.to_s
|
44
|
+
if ["ActiveSupport::Cache::RedisStore", "ActiveSupport::Cache::ReadthisStore"].include? ActiveJobStatus.store.class.to_s
|
46
45
|
job_ids = ActiveJobStatus.store.smembers(batch_id)
|
47
46
|
else
|
48
47
|
job_ids = ActiveJobStatus.store.fetch(batch_id).to_a
|
@@ -62,4 +61,3 @@ module ActiveJobStatus
|
|
62
61
|
end
|
63
62
|
end
|
64
63
|
end
|
65
|
-
|
@@ -1,11 +1,29 @@
|
|
1
1
|
module ActiveJobStatus
|
2
|
-
|
3
|
-
|
2
|
+
class JobStatus
|
3
|
+
ENQUEUED = :queued
|
4
|
+
WORKING = :working
|
5
|
+
COMPLETED = :completed
|
4
6
|
|
5
|
-
|
6
|
-
|
7
|
-
|
7
|
+
attr_reader :status
|
8
|
+
|
9
|
+
def initialize(status)
|
10
|
+
@status = status && status.to_sym
|
11
|
+
end
|
12
|
+
|
13
|
+
def queued?
|
14
|
+
status == ENQUEUED
|
15
|
+
end
|
16
|
+
|
17
|
+
def working?
|
18
|
+
status == WORKING
|
19
|
+
end
|
20
|
+
|
21
|
+
def completed?
|
22
|
+
status == COMPLETED
|
23
|
+
end
|
24
|
+
|
25
|
+
def empty?
|
26
|
+
status.nil?
|
8
27
|
end
|
9
28
|
end
|
10
29
|
end
|
11
|
-
|
@@ -1,17 +1,41 @@
|
|
1
1
|
module ActiveJobStatus
|
2
|
-
|
3
|
-
|
2
|
+
class JobTracker
|
3
|
+
DEFAULT_EXPIRATION = 72.hours.freeze
|
4
4
|
|
5
|
-
def
|
6
|
-
|
5
|
+
def initialize(job_id:, store: ActiveJobStatus.store, expiration: ActiveJobStatus.expiration)
|
6
|
+
@job_id = job_id
|
7
|
+
@store = store
|
8
|
+
@expiration = expiration
|
7
9
|
end
|
8
10
|
|
9
|
-
def
|
10
|
-
|
11
|
+
def enqueued
|
12
|
+
store.write(
|
13
|
+
job_id,
|
14
|
+
JobStatus::ENQUEUED.to_s,
|
15
|
+
expires_in: expiration || DEFAULT_EXPIRATION
|
16
|
+
)
|
11
17
|
end
|
12
18
|
|
13
|
-
def
|
14
|
-
|
19
|
+
def performing
|
20
|
+
store.write(
|
21
|
+
job_id,
|
22
|
+
JobStatus::WORKING.to_s
|
23
|
+
)
|
15
24
|
end
|
25
|
+
|
26
|
+
def completed
|
27
|
+
store.write(
|
28
|
+
job_id,
|
29
|
+
JobStatus::COMPLETED.to_s
|
30
|
+
)
|
31
|
+
end
|
32
|
+
|
33
|
+
def deleted
|
34
|
+
store.delete(job_id)
|
35
|
+
end
|
36
|
+
|
37
|
+
private
|
38
|
+
|
39
|
+
attr_reader :job_id, :store, :expiration
|
16
40
|
end
|
17
41
|
end
|
@@ -14,7 +14,12 @@ module ActiveJobStatus
|
|
14
14
|
end
|
15
15
|
end
|
16
16
|
|
17
|
-
ActiveSupport::Cache::RedisStore
|
18
|
-
|
19
|
-
|
20
|
-
|
17
|
+
if defined? ActiveSupport::Cache::RedisStore
|
18
|
+
ActiveSupport::Cache::RedisStore.include(
|
19
|
+
ActiveJobStatus::Redis
|
20
|
+
)
|
21
|
+
elsif defined? ActiveSupport::Cache::ReadthisStore
|
22
|
+
ActiveSupport::Cache::ReadthisStore.include(
|
23
|
+
ActiveJobStatus::Redis
|
24
|
+
)
|
25
|
+
end
|
@@ -1,11 +1,8 @@
|
|
1
1
|
require "active_job"
|
2
|
+
require "active_job_status/hooks"
|
3
|
+
|
2
4
|
module ActiveJobStatus
|
3
5
|
class TrackableJob < ActiveJob::Base
|
4
|
-
|
5
|
-
before_enqueue { ActiveJobStatus::JobTracker.enqueue(job_id: @job_id) }
|
6
|
-
|
7
|
-
before_perform { ActiveJobStatus::JobTracker.update(job_id: @job_id, status: :working) }
|
8
|
-
|
9
|
-
after_perform { ActiveJobStatus::JobTracker.remove(job_id: @job_id) }
|
6
|
+
include ActiveJobStatus::Hooks
|
10
7
|
end
|
11
8
|
end
|
data/spec/job_batch_spec.rb
CHANGED
@@ -57,7 +57,11 @@ describe ActiveJobStatus::JobBatch do
|
|
57
57
|
update_store(id_array: total_jobs, job_status: :working)
|
58
58
|
expect(batch.completed?).to be_falsey
|
59
59
|
end
|
60
|
-
it "should be true when jobs are completed" do
|
60
|
+
it "should be true when jobs are all completed" do
|
61
|
+
update_store(id_array: total_jobs, job_status: :completed)
|
62
|
+
expect(batch.completed?).to be_truthy
|
63
|
+
end
|
64
|
+
it "should be true when jobs are not in the store" do
|
61
65
|
clear_store(id_array: total_jobs)
|
62
66
|
expect(batch.completed?).to be_truthy
|
63
67
|
end
|
data/spec/job_status_spec.rb
CHANGED
@@ -1,26 +1,53 @@
|
|
1
1
|
require "spec_helper"
|
2
2
|
|
3
3
|
describe ActiveJobStatus::JobStatus do
|
4
|
+
let(:job_status) { described_class.new(status) }
|
4
5
|
|
5
|
-
|
6
|
+
context 'when queued' do
|
7
|
+
let(:status) { 'queued' }
|
6
8
|
|
7
|
-
|
8
|
-
|
9
|
+
it 'returns the correct state' do
|
10
|
+
expect(job_status.queued?).to eq true
|
11
|
+
expect(job_status.working?).to eq false
|
12
|
+
expect(job_status.completed?).to eq false
|
13
|
+
expect(job_status.empty?).to eq false
|
14
|
+
expect(job_status.status).to eq :queued
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
context 'when working' do
|
19
|
+
let(:status) { 'working' }
|
9
20
|
|
10
|
-
|
11
|
-
|
12
|
-
|
21
|
+
it 'returns the correct state' do
|
22
|
+
expect(job_status.queued?).to eq false
|
23
|
+
expect(job_status.working?).to eq true
|
24
|
+
expect(job_status.completed?).to eq false
|
25
|
+
expect(job_status.empty?).to eq false
|
26
|
+
expect(job_status.status).to eq :working
|
13
27
|
end
|
28
|
+
end
|
14
29
|
|
15
|
-
|
30
|
+
context 'when completed' do
|
31
|
+
let(:status) { 'completed' }
|
16
32
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
33
|
+
it 'returns the correct state' do
|
34
|
+
expect(job_status.queued?).to eq false
|
35
|
+
expect(job_status.working?).to eq false
|
36
|
+
expect(job_status.completed?).to eq true
|
37
|
+
expect(job_status.empty?).to eq false
|
38
|
+
expect(job_status.status).to eq :completed
|
23
39
|
end
|
24
40
|
end
|
25
|
-
end
|
26
41
|
|
42
|
+
context 'when nil' do
|
43
|
+
let(:status) { nil }
|
44
|
+
|
45
|
+
it 'returns the correct state' do
|
46
|
+
expect(job_status.queued?).to eq false
|
47
|
+
expect(job_status.working?).to eq false
|
48
|
+
expect(job_status.completed?).to eq false
|
49
|
+
expect(job_status.empty?).to eq true
|
50
|
+
expect(job_status.status).to eq nil
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
data/spec/job_tracker_spec.rb
CHANGED
@@ -1,29 +1,53 @@
|
|
1
1
|
require "spec_helper"
|
2
2
|
|
3
3
|
describe ActiveJobStatus::JobTracker do
|
4
|
-
|
5
4
|
let!(:store) { ActiveJobStatus.store = new_store }
|
6
|
-
let(:
|
5
|
+
let(:job_id) { 'j0b-1d' }
|
6
|
+
let(:tracker) { described_class.new(job_id: job_id) }
|
7
|
+
|
8
|
+
describe "#enqueued" do
|
9
|
+
it "starts tracking the job" do
|
10
|
+
tracker.enqueued
|
11
|
+
expect(store.fetch(job_id)).to eq "queued"
|
12
|
+
end
|
7
13
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
14
|
+
context 'with default expiration period' do
|
15
|
+
before { ActiveJobStatus.expiration = nil }
|
16
|
+
|
17
|
+
it 'expires in 72 hours' do
|
18
|
+
expect(store).to receive(:write).with(job_id, "queued", expires_in: 72.hours)
|
19
|
+
tracker.enqueued
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
context 'with default expiration period' do
|
24
|
+
before { ActiveJobStatus.expiration = 10.seconds }
|
25
|
+
|
26
|
+
it 'expires in the given period' do
|
27
|
+
expect(store).to receive(:write).with(job_id, "queued", expires_in: 10.seconds)
|
28
|
+
tracker.enqueued
|
29
|
+
end
|
12
30
|
end
|
13
31
|
end
|
14
32
|
|
15
|
-
describe "
|
16
|
-
it "
|
17
|
-
|
18
|
-
expect(store.fetch(
|
33
|
+
describe "#performing" do
|
34
|
+
it "updates the job status" do
|
35
|
+
tracker.performing
|
36
|
+
expect(store.fetch(job_id)).to eq "working"
|
19
37
|
end
|
20
38
|
end
|
21
39
|
|
22
|
-
describe "
|
23
|
-
it "
|
24
|
-
|
25
|
-
expect(store.fetch(
|
40
|
+
describe "#completed" do
|
41
|
+
it "updates the job status" do
|
42
|
+
tracker.completed
|
43
|
+
expect(store.fetch(job_id)).to eq "completed"
|
26
44
|
end
|
27
45
|
end
|
28
|
-
end
|
29
46
|
|
47
|
+
describe "#deleted" do
|
48
|
+
it "removes the job from the store" do
|
49
|
+
tracker.deleted
|
50
|
+
expect(store.fetch(job_id)).to eq nil
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
data/spec/spec_helper.rb
CHANGED
data/spec/support/helpers.rb
CHANGED
@@ -3,6 +3,9 @@ module Helpers
|
|
3
3
|
if defined? ActiveSupport::Cache::RedisStore
|
4
4
|
puts "Using RedisStore"
|
5
5
|
ActiveSupport::Cache::RedisStore.new
|
6
|
+
elsif defined? ActiveSupport::Cache::ReadthisStore
|
7
|
+
puts "Using ReadthisStore"
|
8
|
+
ActiveSupport::Cache::ReadthisStore.new
|
6
9
|
else
|
7
10
|
puts "Using MemoryStore"
|
8
11
|
ActiveSupport::Cache::MemoryStore.new
|
data/spec/trackable_job_spec.rb
CHANGED
@@ -1,21 +1,40 @@
|
|
1
1
|
require "spec_helper"
|
2
2
|
|
3
3
|
describe ActiveJobStatus::TrackableJob do
|
4
|
+
class DummyJob < ActiveJobStatus::TrackableJob
|
5
|
+
def perform; end;
|
6
|
+
end
|
4
7
|
|
5
|
-
|
6
|
-
|
7
|
-
let(:trackable_job) { ActiveJobStatus::TrackableJob.new }
|
8
|
+
let(:job) { DummyJob.new }
|
8
9
|
|
9
|
-
|
10
|
-
|
10
|
+
describe 'queueing' do
|
11
|
+
it "should have a job id" do
|
12
|
+
expect(job.job_id).to_not be_blank
|
11
13
|
end
|
12
14
|
end
|
13
15
|
|
14
|
-
describe '
|
15
|
-
let(:
|
16
|
+
describe 'tracking hooks' do
|
17
|
+
let(:job_tracker) { instance_double(ActiveJobStatus::JobTracker) }
|
16
18
|
|
17
|
-
|
18
|
-
|
19
|
+
before do
|
20
|
+
allow(job).to receive(:job_id) { 'j0b-1d' }
|
21
|
+
end
|
22
|
+
|
23
|
+
describe 'before enqueue' do
|
24
|
+
it 'starts to track the job with JobTracker' do
|
25
|
+
expect(ActiveJobStatus::JobTracker).to receive(:new).with(job_id: 'j0b-1d') { job_tracker }
|
26
|
+
expect(job_tracker).to receive(:enqueued)
|
27
|
+
job.enqueue
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
describe 'before/after perform' do
|
32
|
+
it 'updates the job status with JobTracker and then remove it' do
|
33
|
+
expect(ActiveJobStatus::JobTracker).to receive(:new).with(job_id: 'j0b-1d') { job_tracker }
|
34
|
+
expect(job_tracker).to receive(:performing)
|
35
|
+
expect(job_tracker).to receive(:completed)
|
36
|
+
job.perform_now
|
37
|
+
end
|
19
38
|
end
|
20
39
|
end
|
21
40
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: active_job_status
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brad Johnson
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-10-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -70,28 +70,28 @@ dependencies:
|
|
70
70
|
name: activejob
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- - "
|
73
|
+
- - ">"
|
74
74
|
- !ruby/object:Gem::Version
|
75
75
|
version: '4.2'
|
76
76
|
type: :runtime
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- - "
|
80
|
+
- - ">"
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '4.2'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: activesupport
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- - "
|
87
|
+
- - ">"
|
88
88
|
- !ruby/object:Gem::Version
|
89
89
|
version: '4.2'
|
90
90
|
type: :runtime
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
|
-
- - "
|
94
|
+
- - ">"
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '4.2'
|
97
97
|
description: Job status and batches for ActiveJob. Create trackable jobs, check their
|
@@ -114,6 +114,7 @@ files:
|
|
114
114
|
- gemfiles/redis-activesupport.gemfile
|
115
115
|
- lib/active_job_status.rb
|
116
116
|
- lib/active_job_status/configure_redis.rb
|
117
|
+
- lib/active_job_status/hooks.rb
|
117
118
|
- lib/active_job_status/job_batch.rb
|
118
119
|
- lib/active_job_status/job_status.rb
|
119
120
|
- lib/active_job_status/job_tracker.rb
|