workhorse 1.1.1 → 1.2.4

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: 5958b8fe7db7f321dd981b409b217b90cc53ec31115b64b12b1d5c70afcf6d86
4
- data.tar.gz: aa4f0a87290e36b884d54b8a9bc56889249d32808e80aa7e671c6ae120ec4a6c
3
+ metadata.gz: e00bf821fc0315533d96961d5688b12f6ce20aa70ea84ddb336bbd2a5dac3991
4
+ data.tar.gz: 28e9bd8f95d29eb080746ecfa7b9021a4488af1edf9b2023a68f0e98950d9d98
5
5
  SHA512:
6
- metadata.gz: 74be8af063fa45182bd30b9b94e6fbc13e1ba84a6da75ca10ba8356c345105ee7b8613c83c55b9d6df8236f5320c919ce101ce8342f7bf8ce2ab9052c54fdac9
7
- data.tar.gz: 5b48f0bd62fca831890141ea0e4c7e8b206104873b1c95d0db0da8d737731e6732a416ffb31a54f7057244edc109e291355fb63d6619bbc6e5e2ca1e62c23372
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
@@ -22,7 +22,6 @@ task :gemspec do
22
22
  spec.add_development_dependency 'pry'
23
23
  spec.add_dependency 'activesupport'
24
24
  spec.add_dependency 'activerecord'
25
- spec.add_dependency 'schemacop', '~> 2.0'
26
25
  spec.add_dependency 'concurrent-ruby'
27
26
  end
28
27
 
data/VERSION CHANGED
@@ -1 +1 @@
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
@@ -120,4 +120,6 @@ module Workhorse
120
120
  end
121
121
  end
122
122
  end
123
+
124
+ ActiveSupport.run_load_hooks(:workhorse_db_job, DbJob)
123
125
  end
@@ -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 = Time.now)
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 = job.queue_name.blank? ? nil : job.queue_name
18
- db_job = enqueue(wrapper_job, queue: queue, priority: job.priority || 0, perform_at: Time.at(perform_at))
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
@@ -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.1.1 ruby lib
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.1.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-01-19"
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.1.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-01-19 00:00:00.000000000 Z
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.1.4
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: