workhorse 2.0.0 → 2.0.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0ca6c8e15a44efebbcbdc4af242c10397aeba1a20baa3b3c45af4025a657bafe
4
- data.tar.gz: f342e2b53fb79ea99982101e5fc6912baacfe2fa19b6ad97cc3dd9a5922214f1
3
+ metadata.gz: 617b6616890ea3437b817a10d0c1f16438dae9c221a2bc53203793a92417a1ea
4
+ data.tar.gz: 75e040bf7b18a294f435d263087ece37cf9245d2486709681efbdada1c47a76e
5
5
  SHA512:
6
- metadata.gz: e3c898ab631105ce71355032551dd70c94c4a357b17314258756c982c7f06e9e12cc89732c351030a20b5709ff1cfb99a78b123377572637e4ac03d0a0c165bb
7
- data.tar.gz: 5b90517edcd626f792a1861cac9a513b83ff7846a92bcc00c289c03596a0b3255141f59ce3a51e9b1d724d2f425c648c4fb6dfac76a43a17ef757c49fc73509b
6
+ metadata.gz: 4f31d1f201019cda0ada3c1b0757c9e447d66f0db8b90e63bb8337d8b7e5414ef5d3ccbdd0ad081cd7a09145e9607c336cf51f9e946b7d606f0dfea08e559f1e
7
+ data.tar.gz: b306401d8a79d1481c595c924126b3cbe2e537691efefc0a69b7e16cc4eed2585fb36e267ab792d5ebadddede47ce0dd04c47c7be62312f9b968f55d183c2130
data/CHANGELOG.md CHANGED
@@ -1,5 +1,14 @@
1
1
  # Workhorse Changelog
2
2
 
3
+ ## 2.0.1 - 2026-10-28
4
+
5
+ ### Added
6
+
7
+ * `Workhorse::Performer#db_job`: inside a job, `Workhorse.performer.db_job`
8
+ returns the job's own `Workhorse::DbJob`. This lets a job link something to
9
+ its record that outlives the job, for example a progress display that has to
10
+ end when the worker cleans up after a killed worker.
11
+
3
12
  ## 2.0.0 - 2026-10-14
4
13
 
5
14
  Sitrox reference: #154443.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 2.0.0
1
+ 2.0.1
@@ -10,6 +10,13 @@ module Workhorse
10
10
  # @return [Workhorse::Worker] The worker that owns this performer
11
11
  attr_reader :worker
12
12
 
13
+ # The job this performer performs. Inside a job, {Workhorse.performer}
14
+ # gives a job its own database record, e.g. to link something to it that
15
+ # outlives the job.
16
+ #
17
+ # @return [Workhorse::DbJob]
18
+ attr_reader :db_job
19
+
13
20
  # Creates a new performer for a specific job.
14
21
  #
15
22
  # @param db_job_id [Integer] The ID of the {Workhorse::DbJob} to perform
@@ -30,6 +30,21 @@ class Workhorse::PerformerTest < WorkhorseTest
30
30
  work_until(pool_size: 5, polling_interval: 0.2) { assert_equal 'failed', Workhorse::DbJob.first.state }
31
31
  end
32
32
 
33
+ class OwnDbJobJob
34
+ class_attribute :db_job_id
35
+
36
+ def perform
37
+ self.class.db_job_id = Workhorse.performer.db_job.id
38
+ end
39
+ end
40
+
41
+ def test_a_job_finds_its_own_db_job
42
+ db_job = Workhorse.enqueue OwnDbJobJob.new
43
+ work_until(pool_size: 1, polling_interval: 0.2) { assert_equal 'succeeded', db_job.reload.state }
44
+
45
+ assert_equal db_job.id, OwnDbJobJob.db_job_id
46
+ end
47
+
33
48
  def test_on_exception
34
49
  old_callback = Workhorse.on_exception
35
50
  exception = nil
data/workhorse.gemspec CHANGED
@@ -1,14 +1,14 @@
1
1
  # -*- encoding: utf-8 -*-
2
- # stub: workhorse 2.0.0 ruby lib
2
+ # stub: workhorse 2.0.1 ruby lib
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = "workhorse".freeze
6
- s.version = "2.0.0".freeze
6
+ s.version = "2.0.1".freeze
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 = "2026-10-14"
11
+ s.date = "2026-10-28"
12
12
  s.files = [".github/workflows/ruby.yml".freeze, ".gitignore".freeze, ".releaser_config".freeze, ".rubocop.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/generators/workhorse/templates/create_table_workhorse_schedules.rb".freeze, "lib/workhorse.rb".freeze, "lib/workhorse/active_job_extension.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_late_schedules_job.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/notifiers/base.rb".freeze, "lib/workhorse/notifiers/file_system.rb".freeze, "lib/workhorse/notifiers/none.rb".freeze, "lib/workhorse/notifiers/redis.rb".freeze, "lib/workhorse/performer.rb".freeze, "lib/workhorse/poller.rb".freeze, "lib/workhorse/pool.rb".freeze, "lib/workhorse/schedule.rb".freeze, "lib/workhorse/schedules.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/daemon_test.rb".freeze, "test/workhorse/db_job_test.rb".freeze, "test/workhorse/enqueuer_test.rb".freeze, "test/workhorse/notifier_test.rb".freeze, "test/workhorse/performer_test.rb".freeze, "test/workhorse/poller_test.rb".freeze, "test/workhorse/pool_test.rb".freeze, "test/workhorse/schedule_test.rb".freeze, "test/workhorse/worker_test.rb".freeze, "test/workhorse/yjit_test.rb".freeze, "workhorse.gemspec".freeze]
13
13
  s.homepage = "https://github.com/sitrox/workhorse".freeze
14
14
  s.licenses = ["MIT".freeze]
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: workhorse
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 2.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sitrox
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 2026-10-14 00:00:00.000000000 Z
10
+ date: 2026-10-28 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: activesupport
@@ -143,7 +143,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
143
143
  - !ruby/object:Gem::Version
144
144
  version: '0'
145
145
  requirements: []
146
- rubygems_version: 4.0.15
146
+ rubygems_version: 3.6.9
147
147
  specification_version: 4
148
148
  summary: Multi-threaded job backend with database queuing for ruby.
149
149
  test_files: