sidekiq-amigo 1.4.1 → 1.5.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: defd2060d1c4a56780815bbaff9cfc54169ed12857fc5c1e20a075a5ea60ee8d
4
- data.tar.gz: 1cefc43ca64867f333d5706c5f2df3998a3fac294d957ccdf95f05763589d1aa
3
+ metadata.gz: 70d47770af144a84aedec89e8b74e4ebd13851119a5c329a0f4c65d56ec94a60
4
+ data.tar.gz: 69305abac1bb5eeb00eaf81613e591476bf1acb35cdac50dcc97a094d255aab8
5
5
  SHA512:
6
- metadata.gz: fde4becc89be41126f447ce282a9c6ccbe5adb05b979cc6dbea455d7bd7735043001115722450b412434253a23dc0b80bab6766b43804ad58698d0eddfd6713b
7
- data.tar.gz: 43209e4289474df8d62bc1d8052869df1cd7c375df921ead70f5aeb69f03be79dbaba53f33b1f04d66153681fd0f6e92a598176a3e7261718cda972306b571af
6
+ metadata.gz: adf9aa76c352c9ddb9832f142d415b4efded423324dd78a87cfc3140a755eb266dd1a1b80e15a2f911ccafaaf8ea89f416d66dfe25a17955709fb1e4828554ef
7
+ data.tar.gz: f69c16bfd06a7ea5cc3ac15db4a962f3fb02345db60ac6f581123bf5425627775bb1958e9f99ff0be8b5956db57d4c6fec64d5422ff7903c0157bf0a0f8ba4d1
data/lib/amigo/retry.rb CHANGED
@@ -52,6 +52,12 @@ module Amigo
52
52
  end
53
53
  end
54
54
 
55
+ # Raise this error to finish the job. Usually used when there is a fatal error
56
+ # from deep in a job and they want to jump out of the whole thing.
57
+ # Usually you should log before raising this!
58
+ class Quit < Error
59
+ end
60
+
55
61
  class ServerMiddleware
56
62
  def call(worker, job, _queue)
57
63
  yield
@@ -61,6 +67,9 @@ module Amigo
61
67
  handle_die(worker, job, e)
62
68
  rescue Amigo::Retry::OrDie => e
63
69
  handle_retry_or_die(worker, job, e)
70
+ rescue Amigo::Retry::Quit
71
+ Sidekiq.logger.info("job_quit")
72
+ return
64
73
  end
65
74
 
66
75
  def handle_retry(worker, job, e)
data/lib/amigo/router.rb CHANGED
@@ -11,7 +11,13 @@ module Amigo
11
11
  def perform(event_json)
12
12
  event_name = event_json["name"]
13
13
  matches = Amigo.registered_event_jobs.
14
- select { |job| File.fnmatch(job.pattern, event_name, File::FNM_EXTGLOB) }
14
+ select do |job|
15
+ if job.pattern.is_a?(Regexp)
16
+ job.pattern.match(event_name)
17
+ else
18
+ File.fnmatch(job.pattern, event_name, File::FNM_EXTGLOB)
19
+ end
20
+ end
15
21
  matches.each do |job|
16
22
  Amigo.synchronous_mode ? job.new.perform(event_json) : job.perform_async(event_json)
17
23
  end
data/lib/amigo/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Amigo
4
- VERSION = "1.4.1"
4
+ VERSION = "1.5.0"
5
5
  end
data/lib/amigo.rb CHANGED
@@ -57,6 +57,9 @@ require "sidekiq-cron"
57
57
  # The 'on' pattern can be 'myapp.customer.*' to match all customer events for example,
58
58
  # or '*' to match all events. The rules of matching follow File.fnmatch.
59
59
  #
60
+ # The 'on' pattern also accepts regular expressions, like /^myapp\.customer\.[a-z]+$/,
61
+ # to control the matching rules more closely than File.fnmatch can provide.
62
+ #
60
63
  # Jobs must implement a `_perform` method, which takes a Amigo::Event.
61
64
  # Note that normal Sidekiq workers use a 'perform' method that takes a variable number of arguments;
62
65
  # the base Async::Job class has this method and delegates its business logic to the subclass _perform method.
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sidekiq-amigo
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.1
4
+ version: 1.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lithic Technology
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-02-24 00:00:00.000000000 Z
11
+ date: 2023-03-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sidekiq