activejob-status 0.2.1 → 0.2.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d578a534198cba31b4b8bbf48fb9d20625c630bca3f011985a08d570bb46fd3e
4
- data.tar.gz: 78f27c54c8d486dd0332b6135cd43ca2fef7fb57414ebaca33d15941b45f9d77
3
+ metadata.gz: 8f631add9a816c630d494258c0c62b8357f04d6cf1dcb4c8681646f294b1af1e
4
+ data.tar.gz: 1bf02e33cfc7ae8e5ffddfd72466efd181d241cab6cfa1a07b75094fd241c18c
5
5
  SHA512:
6
- metadata.gz: 8f4519d605117f1df429a46f04fc2d670719adca040d3822260c4565d898e4f6c386cda28676df55a1b76f2177ad58606e0b3c7b1b0701621fea9f154590f57a
7
- data.tar.gz: 6250e8d76b10e8b8fcc0e719456c1ad6f34fb5fb5d92973bc2b09990fb56f7c0337ac345b96e9fbf9402dbc1aa631273ee7b05cec997b5f3cd6cd6339d5e7235
6
+ metadata.gz: 71af5a019d4004e27400abc14ee1b3d5c83a794d86096f0dd821a5f8fd52782b303beaac6b31533b6b50e74e44c2254d7e9bbed52d3439556f79aff6fa349ad9
7
+ data.tar.gz: b5ab17ba47d02f4a0493fc92b34684b261c1720da1da18627a050a7746129febdbcc30e750970d356948b738ab306a4fc8cecb2ca7dc35ccbf1a9c477a46dea8
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ActiveJob
2
4
  module Status
3
5
  class Progress
@@ -7,21 +9,19 @@ module ActiveJob
7
9
  delegate :status, to: :job, prefix: true
8
10
 
9
11
  def initialize(job)
10
- @job = job
11
- @total = 100
12
+ @job = job
13
+ @total = 100
12
14
  @progress = 0
13
15
  end
14
16
 
15
17
  def total=(num)
16
18
  @total = num
17
19
  job_status.update(to_h, force: true)
18
- self
19
20
  end
20
21
 
21
22
  def progress=(num)
22
23
  @progress = num
23
24
  job_status.update(to_h, force: true)
24
- self
25
25
  end
26
26
 
27
27
  def increment(num = 1)
@@ -43,7 +43,7 @@ module ActiveJob
43
43
  end
44
44
 
45
45
  def to_h
46
- { progress: @progress, total: @total }
46
+ {progress: @progress, total: @total}
47
47
  end
48
48
  end
49
49
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ActiveJob
2
4
  module Status
3
5
  class Status
@@ -5,21 +7,24 @@ module ActiveJob
5
7
  delegate :queued?, :working?, :completed?, :failed?, to: :status_inquiry
6
8
 
7
9
  def initialize(job, options = {})
8
- options = ActiveJob::Status.options.merge(options)
10
+ options = ActiveJob::Status.options.merge(options)
9
11
  @storage = ActiveJob::Status::Storage.new(options)
10
- @job = job
12
+ @job = job
11
13
  end
12
14
 
13
15
  def []=(key, value)
14
- update({ key => value }, force: true)
16
+ update({key => value}, force: true)
15
17
  end
16
18
 
17
19
  def read
18
20
  @storage.read(@job)
19
21
  end
20
- alias to_h read
22
+ alias_method :to_h, :read
21
23
 
22
24
  def update(message, options = {})
25
+ @job.progress.instance_variable_set(:@progress, message[:progress]) if message.include?(:progress)
26
+ @job.progress.instance_variable_set(:@total, message[:total]) if message.include?(:total)
27
+
23
28
  @storage.update(@job, message, **options)
24
29
  end
25
30
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ActiveJob
2
4
  module Status
3
5
  class Storage
@@ -5,7 +7,7 @@ module ActiveJob
5
7
  options.assert_valid_keys(:expires_in, :throttle_interval)
6
8
 
7
9
  @expires_in = options[:expires_in]
8
- @throttle = ActiveJob::Status::Throttle.new(options[:throttle_interval])
10
+ @throttle = ActiveJob::Status::Throttle.new(options[:throttle_interval])
9
11
  end
10
12
 
11
13
  def store
@@ -1,16 +1,17 @@
1
+ # frozen_string_literal: true
1
2
 
2
3
  module ActiveJob
3
4
  module Status
4
5
  class Throttle
5
6
  def initialize(interval)
6
- @interval = interval
7
+ @interval = interval
7
8
  @started_at = Time.current
8
9
  end
9
10
 
10
11
  def wrap(force: false)
11
12
  return yield if force || @interval.nil? || @interval.zero?
12
13
 
13
- now = Time.current
14
+ now = Time.current
14
15
  elasped = now - @started_at
15
16
  return if @interval > elasped
16
17
 
@@ -1,5 +1,7 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ActiveJob
2
4
  module Status
3
- VERSION = '0.2.1'.freeze
5
+ VERSION = "0.2.2"
4
6
  end
5
7
  end
@@ -1,25 +1,28 @@
1
- require 'active_support/core_ext/hash'
2
- require 'activejob-status/storage'
3
- require 'activejob-status/status'
4
- require 'activejob-status/progress'
5
- require 'activejob-status/throttle'
1
+ # frozen_string_literal: true
2
+
3
+ require "active_support/concern"
4
+ require "active_support/core_ext/hash"
5
+ require "activejob-status/storage"
6
+ require "activejob-status/status"
7
+ require "activejob-status/progress"
8
+ require "activejob-status/throttle"
6
9
 
7
10
  module ActiveJob
8
11
  module Status
9
12
  extend ActiveSupport::Concern
10
13
 
11
- DEFAULT_OPTIONS = {
12
- expires_in: 60 * 30,
14
+ DEFAULT_OPTIONS = {
15
+ expires_in: 60 * 30,
13
16
  throttle_interval: 0
14
17
  }.freeze
15
18
 
16
19
  included do
17
- before_enqueue { |job| job.status.update(status: :queued) }
18
- before_perform { |job| job.status.update(status: :working) }
19
- after_perform { |job| job.status.update(status: :completed) }
20
+ before_enqueue { |job| job.status[:status] = :queued }
21
+ before_perform { |job| job.status[:status] = :working }
22
+ after_perform { |job| job.status[:status] = :completed }
20
23
 
21
24
  rescue_from(Exception) do |e|
22
- status.update(status: :failed)
25
+ status[:status] = :failed
23
26
  raise e
24
27
  end
25
28
  end
@@ -43,7 +46,7 @@ module ActiveJob
43
46
  end
44
47
 
45
48
  def store=(store)
46
- store = ActiveSupport::Cache.lookup_store(*store) if store.is_a?(Array) || store.is_a?(Symbol)
49
+ store = ActiveSupport::Cache.lookup_store(*store) if store.is_a?(Array) || store.is_a?(Symbol)
47
50
  @@store = store
48
51
  end
49
52
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activejob-status
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Savater Sebastien
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-09-19 00:00:00.000000000 Z
11
+ date: 2021-09-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activejob
@@ -38,6 +38,118 @@ dependencies:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '4.2'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '13.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '13.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rspec
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '3.0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '3.0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: bundler
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '1.3'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '1.3'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rubocop
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '1.20'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '1.20'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rubocop-performance
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '1.11'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '1.11'
111
+ - !ruby/object:Gem::Dependency
112
+ name: rubocop-rspec
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '2.4'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '2.4'
125
+ - !ruby/object:Gem::Dependency
126
+ name: rubocop-rake
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: standard
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: 1.3.0
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: 1.3.0
41
153
  description:
42
154
  email:
43
155
  - savater.sebastien@gmail.com
@@ -70,7 +182,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
70
182
  - !ruby/object:Gem::Version
71
183
  version: '0'
72
184
  requirements: []
73
- rubygems_version: 3.2.3
185
+ rubygems_version: 3.1.4
74
186
  signing_key:
75
187
  specification_version: 4
76
188
  summary: Monitor your jobs