sidekiq-amigo 1.0.0 → 1.1.2

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: b5204accb28834a6d5cb0baf274aa92e96f8ab2480316d6578c1e35e31075f44
4
- data.tar.gz: c397ff5a38053be56726310f8b5e4e1b934c85c84f17fa60bb636e6d4b477252
3
+ metadata.gz: 1ad3126cf6ef41459f944083e16b5c64a83a59e2df2617e238112b608c9d545c
4
+ data.tar.gz: c53b63fa0b89f7d5f8f7c84f9199ae23941aa400991d8835d0f11e272060fc13
5
5
  SHA512:
6
- metadata.gz: 04ce08ea274cf3132db350ecf826787e594faa47e1905fbc61307156d6b87f6a33b5301c05acf2b88b21aff52d600e52ae7cc31dd83f53e72ac972c5c2b56e0e
7
- data.tar.gz: e46d7aab0d27953b1d16903cb98d77e8b8ddcbe56ea091950c76bdf60c18e3207cc085dc2c87e3f0e78c2f7e310325d4de8492c3d73f04babdcbf0a53be2a3f9
6
+ metadata.gz: e4e05313b891b464942f591bf63ab199bc586dff134779581621364a93e928014bc2f96f5184d1df367d1f2ef1be7e4a36b5af12351daca6fc9e7da723577221
7
+ data.tar.gz: 53b8a94510e1396c5fc779d36c9eeccb379ca02b11f5b9cc71822565b0b88874c381fda32c854e9addc664f1c08ec46ebafc6c5c9833f2f566140ae6c56b0fed
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "amigo/job"
3
+ require "amigo"
4
4
 
5
5
  class Amigo
6
6
  class AuditLogger
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require "amigo"
3
4
  require "amigo/job"
4
5
 
5
6
  # Put jobs here to die. If you just remove a job in Sidekiq, it may be queued up
@@ -31,7 +32,7 @@ class Amigo
31
32
  def self.noop_class
32
33
  cls = Class.new do
33
34
  def _perform(*)
34
- Amigo.log(self, :warn, "deprecated_job_invoked", nil)
35
+ Amigo.log(self, :warn, "deprecated_job_invoked", {})
35
36
  end
36
37
  end
37
38
  cls.extend(Amigo::Job)
data/lib/amigo/job.rb CHANGED
@@ -2,11 +2,11 @@
2
2
 
3
3
  require "sidekiq"
4
4
 
5
+ require "amigo"
6
+
5
7
  class Amigo
6
8
  module Job
7
9
  def self.extended(cls)
8
- Amigo.registered_jobs << cls
9
-
10
10
  cls.include(Sidekiq::Worker)
11
11
  cls.extend(ClassMethods)
12
12
  cls.pattern = ""
data/lib/amigo/router.rb CHANGED
@@ -1,6 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "amigo/job"
3
+ require "sidekiq"
4
+
5
+ require "amigo"
4
6
 
5
7
  class Amigo
6
8
  class Router
@@ -8,8 +8,6 @@ require "amigo"
8
8
  class Amigo
9
9
  module ScheduledJob
10
10
  def self.extended(cls)
11
- Amigo.registered_jobs << cls
12
-
13
11
  cls.include(Sidekiq::Worker)
14
12
  cls.sidekiq_options(retry: false)
15
13
  cls.extend(ClassMethods)
@@ -1,11 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "sidekiq/testing"
3
+ require "amigo"
4
4
 
5
5
  class Amigo
6
6
  module SpecHelpers
7
7
  def self.included(context)
8
- Sidekiq::Testing.inline!
9
8
  context.before(:each) do |example|
10
9
  Amigo.synchronous_mode = true if example.metadata[:async]
11
10
  end
data/lib/amigo/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class Amigo
4
- VERSION = "1.0.0"
4
+ VERSION = "1.1.2"
5
5
  end
data/lib/amigo.rb CHANGED
@@ -98,10 +98,9 @@ require "sidekiq-cron"
98
98
  # Splay defaults to 30s; you may wish to always provide splay, whatever you think for your job.
99
99
  #
100
100
  class Amigo
101
- require "amigo/job"
102
- require "amigo/scheduled_job"
103
- require "amigo/audit_logger"
104
- require "amigo/router"
101
+ class Error < StandardError; end
102
+
103
+ class StartSchedulerFailed < Error; end
105
104
 
106
105
  class << self
107
106
  attr_accessor :structured_logging
@@ -118,7 +117,8 @@ class Amigo
118
117
  end
119
118
 
120
119
  def log(job, level, message, params)
121
- if self.structured_logging
120
+ params ||= {}
121
+ if self.structured_logging && !params.empty?
122
122
  paramstr = params.map { |k, v| "#{k}=#{v}" }.join(" ")
123
123
  message = "#{message} #{paramstr}"
124
124
  end
@@ -180,6 +180,8 @@ class Amigo
180
180
  # Install Amigo so that every publish will be sent to the AuditLogger job
181
181
  # and will invoke the relevant jobs in registered_jobs via the Router job.
182
182
  def install_amigo_jobs
183
+ require "amigo/audit_logger"
184
+ require "amigo/router"
183
185
  return self.register_subscriber do |ev|
184
186
  self._subscriber(ev)
185
187
  end
@@ -190,21 +192,25 @@ class Amigo
190
192
  Amigo::AuditLogger.perform_async(event_json)
191
193
  Amigo::Router.perform_async(event_json)
192
194
  end
193
- #
194
- # # Start the scheduler.
195
- # # This should generally be run in the Sidekiq worker process,
196
- # # not a webserver process.
197
- # def self.start_scheduler
198
- # hash = self.scheduled_jobs.each_with_object({}) do |job, memo|
199
- # self.logger.info "Scheduling %s every %p" % [job.name, job.cron_expr]
200
- # memo[job.name] = {
201
- # "class" => job.name,
202
- # "cron" => job.cron_expr,
203
- # }
204
- # end
205
- # load_errs = Sidekiq::Cron::Job.load_from_hash hash
206
- # raise "Errors loading sidekiq-cron jobs: %p" % [load_errs] if load_errs.present?
207
- # end
195
+
196
+ def register_job(job)
197
+ self.registered_jobs << job
198
+ end
199
+
200
+ # Start the scheduler.
201
+ # This should generally be run in the Sidekiq worker process,
202
+ # not a webserver process.
203
+ def start_scheduler(load_from_hash=Sidekiq::Cron::Job.method(:load_from_hash))
204
+ hash = self.registered_scheduled_jobs.each_with_object({}) do |job, memo|
205
+ self.log(nil, :info, "scheduling_job_cron", {job_name: job.name, job_cron: job.cron_expr})
206
+ memo[job.name] = {
207
+ "class" => job.name,
208
+ "cron" => job.cron_expr,
209
+ }
210
+ end
211
+ load_errs = load_from_hash.call(hash) || {}
212
+ raise StartSchedulerFailed, "Errors loading sidekiq-cron jobs: %p" % [load_errs] unless load_errs.empty?
213
+ end
208
214
  end
209
215
 
210
216
  class Event
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.0.0
4
+ version: 1.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lithic Technology
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-03-04 00:00:00.000000000 Z
11
+ date: 2022-03-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sidekiq