workhorse 1.1.1 → 1.2.4
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/CHANGELOG.md +32 -0
- data/README.md +15 -0
- data/Rakefile +0 -1
- data/VERSION +1 -1
- data/lib/active_job/queue_adapters/workhorse_adapter.rb +2 -2
- data/lib/workhorse/db_job.rb +2 -0
- data/lib/workhorse/enqueuer.rb +10 -4
- data/lib/workhorse/performer.rb +1 -0
- data/workhorse.gemspec +3 -6
- metadata +9 -23
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e00bf821fc0315533d96961d5688b12f6ce20aa70ea84ddb336bbd2a5dac3991
|
4
|
+
data.tar.gz: 28e9bd8f95d29eb080746ecfa7b9021a4488af1edf9b2023a68f0e98950d9d98
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c1d9ce641718690cafd39d79e795d487e90aba85c46c46d1a3fbffde99527041160d02831c7da36fbfebca1feff38873e9f6ab31491e6e35aaba9fea5ba06363
|
7
|
+
data.tar.gz: 92174a5e2ee2882a2ed5f0f46530d773c029e60eb9632cb189e6b7b6bbe3684b3f5e52f35a710aaf013ed6e698ee63962f5b6d9f220cb0fe42ab7305253bec95
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,37 @@
|
|
1
1
|
# Workhorse Changelog
|
2
2
|
|
3
|
+
## 1.2.4 - 2021-06-08
|
4
|
+
|
5
|
+
* Add `workhorse_db_job` load hook
|
6
|
+
|
7
|
+
## 1.2.3 - 2021-02-09
|
8
|
+
|
9
|
+
* Fix warning with ruby 2.7
|
10
|
+
|
11
|
+
## 1.2.2 - 2021-01-27
|
12
|
+
|
13
|
+
* Remove unused gem dependency to `schemacop`
|
14
|
+
|
15
|
+
## 1.2.1 - 2021-01-27
|
16
|
+
|
17
|
+
* Log job description (if given) when performing job
|
18
|
+
|
19
|
+
## 1.2.0 - 2021-01-27
|
20
|
+
|
21
|
+
* `Workhorse.enqueue_active_job`
|
22
|
+
* Change `perform_at` to a keyword arument
|
23
|
+
* Allow passing `:description` and `:queue`
|
24
|
+
|
25
|
+
Note that when upgrading, change:
|
26
|
+
|
27
|
+
```ruby
|
28
|
+
# From
|
29
|
+
Workhorse.enqueue_active_job MyJob, 5.minutes.from_now
|
30
|
+
|
31
|
+
# To
|
32
|
+
Workhorse.enqueue_active_job MyJob, perform_at: 5.minutes.from_now
|
33
|
+
```
|
34
|
+
|
3
35
|
## 1.1.1 - 2021-01-19
|
4
36
|
|
5
37
|
* Remove deprecation warnings with Ruby 2.7
|
data/README.md
CHANGED
@@ -384,6 +384,21 @@ jobs database on a regular interval. Workhorse provides the job
|
|
384
384
|
`Workhorse::Jobs::CleanupSucceededJobs` for this purpose that cleans up all
|
385
385
|
succeeded jobs. You can run this using your scheduler in a specific interval.
|
386
386
|
|
387
|
+
## Load hooks
|
388
|
+
|
389
|
+
Using the load hook `:workhorse_db_job`, you can inject custom code into the
|
390
|
+
Gem-internal model class `Workhorse::DbJob`, for example:
|
391
|
+
|
392
|
+
```ruby
|
393
|
+
# config/initializers/workhorse.rb
|
394
|
+
|
395
|
+
ActiveSupport.on_load :workhorse_db_job do
|
396
|
+
# Code within this block will be run inside of the model class
|
397
|
+
# Workhorse::DbJob.
|
398
|
+
belongs_to :user
|
399
|
+
end
|
400
|
+
```
|
401
|
+
|
387
402
|
## Caveats
|
388
403
|
|
389
404
|
### Errors during polling / crashed workers
|
data/Rakefile
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.
|
1
|
+
1.2.4
|
@@ -14,8 +14,8 @@ module ActiveJob
|
|
14
14
|
Workhorse.enqueue_active_job(job)
|
15
15
|
end
|
16
16
|
|
17
|
-
def enqueue_at(job, timestamp) #:nodoc:
|
18
|
-
Workhorse.enqueue_active_job(job, timestamp)
|
17
|
+
def enqueue_at(job, timestamp = Time.now) #:nodoc:
|
18
|
+
Workhorse.enqueue_active_job(job, perform_at: timestamp)
|
19
19
|
end
|
20
20
|
end
|
21
21
|
end
|
data/lib/workhorse/db_job.rb
CHANGED
data/lib/workhorse/enqueuer.rb
CHANGED
@@ -12,10 +12,16 @@ module Workhorse
|
|
12
12
|
end
|
13
13
|
|
14
14
|
# Enqueue an ActiveJob job
|
15
|
-
def enqueue_active_job(job, perform_at
|
15
|
+
def enqueue_active_job(job, perform_at: Time.now, queue: nil, description: nil)
|
16
16
|
wrapper_job = Jobs::RunActiveJob.new(job.serialize)
|
17
|
-
queue
|
18
|
-
db_job = enqueue(
|
17
|
+
queue ||= job.queue_name if job.queue_name.present?
|
18
|
+
db_job = enqueue(
|
19
|
+
wrapper_job,
|
20
|
+
queue: queue,
|
21
|
+
priority: job.priority || 0,
|
22
|
+
perform_at: Time.at(perform_at),
|
23
|
+
description: description
|
24
|
+
)
|
19
25
|
job.provider_job_id = db_job.id
|
20
26
|
return db_job
|
21
27
|
end
|
@@ -36,7 +42,7 @@ module Workhorse
|
|
36
42
|
end
|
37
43
|
|
38
44
|
job = Workhorse::Jobs::RunRailsOp.new(cls, op_args)
|
39
|
-
enqueue job, workhorse_args
|
45
|
+
enqueue job, **workhorse_args
|
40
46
|
end
|
41
47
|
end
|
42
48
|
end
|
data/lib/workhorse/performer.rb
CHANGED
@@ -59,6 +59,7 @@ module Workhorse
|
|
59
59
|
# Deserialize and perform job
|
60
60
|
# ---------------------------------------------------------------
|
61
61
|
log 'Performing', :info
|
62
|
+
log "Description: #{@db_job.description}", :info unless @db_job.description.blank?
|
62
63
|
|
63
64
|
if Workhorse.perform_jobs_in_tx
|
64
65
|
Workhorse.tx_callback.call do
|
data/workhorse.gemspec
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
-
# stub: workhorse 1.
|
2
|
+
# stub: workhorse 1.2.4 ruby lib
|
3
3
|
|
4
4
|
Gem::Specification.new do |s|
|
5
5
|
s.name = "workhorse".freeze
|
6
|
-
s.version = "1.
|
6
|
+
s.version = "1.2.4"
|
7
7
|
|
8
8
|
s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
|
9
9
|
s.require_paths = ["lib".freeze]
|
10
10
|
s.authors = ["Sitrox".freeze]
|
11
|
-
s.date = "2021-
|
11
|
+
s.date = "2021-06-08"
|
12
12
|
s.files = [".gitignore".freeze, ".releaser_config".freeze, ".rubocop.yml".freeze, ".travis.yml".freeze, "CHANGELOG.md".freeze, "FAQ.md".freeze, "Gemfile".freeze, "LICENSE".freeze, "README.md".freeze, "RUBY_VERSION".freeze, "Rakefile".freeze, "VERSION".freeze, "bin/rubocop".freeze, "lib/active_job/queue_adapters/workhorse_adapter.rb".freeze, "lib/generators/workhorse/install_generator.rb".freeze, "lib/generators/workhorse/templates/bin/workhorse.rb".freeze, "lib/generators/workhorse/templates/config/initializers/workhorse.rb".freeze, "lib/generators/workhorse/templates/create_table_jobs.rb".freeze, "lib/workhorse.rb".freeze, "lib/workhorse/daemon.rb".freeze, "lib/workhorse/daemon/shell_handler.rb".freeze, "lib/workhorse/db_job.rb".freeze, "lib/workhorse/enqueuer.rb".freeze, "lib/workhorse/jobs/cleanup_succeeded_jobs.rb".freeze, "lib/workhorse/jobs/detect_stale_jobs_job.rb".freeze, "lib/workhorse/jobs/run_active_job.rb".freeze, "lib/workhorse/jobs/run_rails_op.rb".freeze, "lib/workhorse/performer.rb".freeze, "lib/workhorse/poller.rb".freeze, "lib/workhorse/pool.rb".freeze, "lib/workhorse/scoped_env.rb".freeze, "lib/workhorse/worker.rb".freeze, "test/active_job/queue_adapters/workhorse_adapter_test.rb".freeze, "test/lib/db_schema.rb".freeze, "test/lib/jobs.rb".freeze, "test/lib/test_helper.rb".freeze, "test/workhorse/db_job_test.rb".freeze, "test/workhorse/enqueuer_test.rb".freeze, "test/workhorse/performer_test.rb".freeze, "test/workhorse/poller_test.rb".freeze, "test/workhorse/pool_test.rb".freeze, "test/workhorse/worker_test.rb".freeze, "workhorse.gemspec".freeze]
|
13
13
|
s.rubygems_version = "3.0.3".freeze
|
14
14
|
s.summary = "Multi-threaded job backend with database queuing for ruby.".freeze
|
@@ -29,7 +29,6 @@ Gem::Specification.new do |s|
|
|
29
29
|
s.add_development_dependency(%q<pry>.freeze, [">= 0"])
|
30
30
|
s.add_runtime_dependency(%q<activesupport>.freeze, [">= 0"])
|
31
31
|
s.add_runtime_dependency(%q<activerecord>.freeze, [">= 0"])
|
32
|
-
s.add_runtime_dependency(%q<schemacop>.freeze, ["~> 2.0"])
|
33
32
|
s.add_runtime_dependency(%q<concurrent-ruby>.freeze, [">= 0"])
|
34
33
|
else
|
35
34
|
s.add_dependency(%q<bundler>.freeze, [">= 0"])
|
@@ -43,7 +42,6 @@ Gem::Specification.new do |s|
|
|
43
42
|
s.add_dependency(%q<pry>.freeze, [">= 0"])
|
44
43
|
s.add_dependency(%q<activesupport>.freeze, [">= 0"])
|
45
44
|
s.add_dependency(%q<activerecord>.freeze, [">= 0"])
|
46
|
-
s.add_dependency(%q<schemacop>.freeze, ["~> 2.0"])
|
47
45
|
s.add_dependency(%q<concurrent-ruby>.freeze, [">= 0"])
|
48
46
|
end
|
49
47
|
else
|
@@ -58,7 +56,6 @@ Gem::Specification.new do |s|
|
|
58
56
|
s.add_dependency(%q<pry>.freeze, [">= 0"])
|
59
57
|
s.add_dependency(%q<activesupport>.freeze, [">= 0"])
|
60
58
|
s.add_dependency(%q<activerecord>.freeze, [">= 0"])
|
61
|
-
s.add_dependency(%q<schemacop>.freeze, ["~> 2.0"])
|
62
59
|
s.add_dependency(%q<concurrent-ruby>.freeze, [">= 0"])
|
63
60
|
end
|
64
61
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: workhorse
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sitrox
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-06-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -164,20 +164,6 @@ dependencies:
|
|
164
164
|
- - ">="
|
165
165
|
- !ruby/object:Gem::Version
|
166
166
|
version: '0'
|
167
|
-
- !ruby/object:Gem::Dependency
|
168
|
-
name: schemacop
|
169
|
-
requirement: !ruby/object:Gem::Requirement
|
170
|
-
requirements:
|
171
|
-
- - "~>"
|
172
|
-
- !ruby/object:Gem::Version
|
173
|
-
version: '2.0'
|
174
|
-
type: :runtime
|
175
|
-
prerelease: false
|
176
|
-
version_requirements: !ruby/object:Gem::Requirement
|
177
|
-
requirements:
|
178
|
-
- - "~>"
|
179
|
-
- !ruby/object:Gem::Version
|
180
|
-
version: '2.0'
|
181
167
|
- !ruby/object:Gem::Dependency
|
182
168
|
name: concurrent-ruby
|
183
169
|
requirement: !ruby/object:Gem::Requirement
|
@@ -192,8 +178,8 @@ dependencies:
|
|
192
178
|
- - ">="
|
193
179
|
- !ruby/object:Gem::Version
|
194
180
|
version: '0'
|
195
|
-
description:
|
196
|
-
email:
|
181
|
+
description:
|
182
|
+
email:
|
197
183
|
executables: []
|
198
184
|
extensions: []
|
199
185
|
extra_rdoc_files: []
|
@@ -241,10 +227,10 @@ files:
|
|
241
227
|
- test/workhorse/pool_test.rb
|
242
228
|
- test/workhorse/worker_test.rb
|
243
229
|
- workhorse.gemspec
|
244
|
-
homepage:
|
230
|
+
homepage:
|
245
231
|
licenses: []
|
246
232
|
metadata: {}
|
247
|
-
post_install_message:
|
233
|
+
post_install_message:
|
248
234
|
rdoc_options: []
|
249
235
|
require_paths:
|
250
236
|
- lib
|
@@ -259,8 +245,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
259
245
|
- !ruby/object:Gem::Version
|
260
246
|
version: '0'
|
261
247
|
requirements: []
|
262
|
-
rubygems_version: 3.
|
263
|
-
signing_key:
|
248
|
+
rubygems_version: 3.0.3
|
249
|
+
signing_key:
|
264
250
|
specification_version: 4
|
265
251
|
summary: Multi-threaded job backend with database queuing for ruby.
|
266
252
|
test_files:
|