sidekiq-amigo 1.4.1 → 1.5.0

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: 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