sidekiq-scheduler 3.1.1 → 4.0.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: aff61224563645891063110d5f9ae5d16e6ccb0fee92df6a5f26976d0169c01b
4
- data.tar.gz: d8a6ac2c6e17426bc095904ac3721a9433a21cfd1be433e5f280b9af5469954a
3
+ metadata.gz: 46f14eafd933ccc91c36ba3b52babf250a9d17723d8a321b016bad2caaf36262
4
+ data.tar.gz: d285ce8992b380f98c05860883c54aa504c83df31aeba252297b1c02d35590a6
5
5
  SHA512:
6
- metadata.gz: b01ea69bb3bafd959681e3f7cb3a5699385bdf73bf8abeb8e75a6e2765ec1476862f1d499046ae00233539ec266d313c55c03558961fab8f02b048e4164778bd
7
- data.tar.gz: 7662c439f79b05f2954cfc0e1da2d0a84236334f75101431ed187ae8c69df47baa52cbee901e90a84e81b7ed5b7f81198938ca09cf3710f5885866b334cfcb43
6
+ metadata.gz: fe3a692c9419fe21b60333f4801c519fa9eb96b2c49f4f7ad9f6bb41001ac8c0b9884ffa01c19018fe5101e2419f09af3df93f3efcd4de11b87b108d785a5047
7
+ data.tar.gz: 264780676f625a002b67b88eb03ee12981a2e222889334799e76c1aefde9ec3d35fad50d645233bd27c195113ea14e5af68ad3d82b4f853e7342f6ae2c3d08c3
data/CHANGELOG.md ADDED
@@ -0,0 +1,25 @@
1
+ # 4.0.2
2
+
3
+ - [**FIX**] Fix sidekiq deprecation warning when Sidekiq 6.5+ [#385](https://github.com/sidekiq-scheduler/sidekiq-scheduler/pull/385)
4
+ - [**FIX**] Fix `#print_schedule` calling a method that doesn't exist in rufus scheduler [#388](https://github.com/sidekiq-scheduler/sidekiq-scheduler/pull/388)
5
+
6
+ # 4.0.1
7
+
8
+ - [**FIX**] Add support for sidekiq 6.5 [#382](https://github.com/sidekiq-scheduler/sidekiq-scheduler/pull/382)
9
+
10
+ # 4.0.0
11
+
12
+ - [**FIX**] Fix CSS not loading on Rails app when Sidekiq < 6 [#377](https://github.com/sidekiq-scheduler/sidekiq-scheduler/pull/377)
13
+ - [**BREAKING CHANGE**] Drop support for Sidekiq 3 [f15e7ca1a5f3ab5b6fd3d7664d67723dba1fa1f1](https://github.com/sidekiq-scheduler/sidekiq-scheduler/commit/f15e7ca1a5f3ab5b6fd3d7664d67723dba1fa1f1)
14
+
15
+ # 4.0.0.alpha1
16
+
17
+ - [**FIX**] Fix deprecated uses of Redis#pipelined [#357](https://github.com/sidekiq-scheduler/sidekiq-scheduler/pull/357)
18
+ - [**DOCS**] Add docs for running multi-sidekiq configurations [#362](https://github.com/sidekiq-scheduler/sidekiq-scheduler/pull/362)
19
+ - [**FIX**] Prevent sidekiq_options from overriding ActiveJob queue settings [#367](https://github.com/sidekiq-scheduler/sidekiq-scheduler/pull/367)
20
+ - [**ENHANCEMENT**] Highlight disabled jobs [#369](https://github.com/sidekiq-scheduler/sidekiq-scheduler/pull/369)
21
+ - [**BREAKING CHANGE**] Require redis 4.2.0 [#370](https://github.com/sidekiq-scheduler/sidekiq-scheduler/pull/370)
22
+ - [**FIX**] Fixes redis deprecation warning regarding `exists` [#370](https://github.com/sidekiq-scheduler/sidekiq-scheduler/pull/370)
23
+ - [**BREAKING CHANGE**] Remove dependecy on thwait and e2mmap [#371](https://github.com/sidekiq-scheduler/sidekiq-scheduler/pull/371)
24
+ - Support Ruby 3.1 [#373](https://github.com/sidekiq-scheduler/sidekiq-scheduler/pull/373)
25
+ - [**BREAKING CHANGE**] Set rufus_scheduler_options via sidekiq.yml file as configuration option [#375](https://github.com/sidekiq-scheduler/sidekiq-scheduler/pull/375)
data/README.md CHANGED
@@ -1,8 +1,8 @@
1
1
  # sidekiq-scheduler
2
2
 
3
3
  <p align="center">
4
- <a href="http://moove-it.github.io/sidekiq-scheduler/">
5
- <img src="https://moove-it.github.io/sidekiq-scheduler/images/small-logo.svg" width="468px" height="200px" alt="Sidekiq Scheduler" />
4
+ <a href="http://sidekiq-scheduler.github.io/sidekiq-scheduler/">
5
+ <img src="https://sidekiq-scheduler.github.io/sidekiq-scheduler/images/small-logo.svg" width="468px" height="200px" alt="Sidekiq Scheduler" />
6
6
  </a>
7
7
  </p>
8
8
 
@@ -10,19 +10,7 @@
10
10
  <a href="https://badge.fury.io/rb/sidekiq-scheduler">
11
11
  <img src="https://badge.fury.io/rb/sidekiq-scheduler.svg" alt="Gem Version">
12
12
  </a>
13
- <a href="https://codeclimate.com/github/moove-it/sidekiq-scheduler">
14
- <img src="https://codeclimate.com/github/moove-it/sidekiq-scheduler/badges/gpa.svg" alt="Code Climate">
15
- </a>
16
- <a href="https://travis-ci.org/moove-it/sidekiq-scheduler">
17
- <img src="https://api.travis-ci.org/moove-it/sidekiq-scheduler.svg?branch=master" alt="Build Status">
18
- </a>
19
- <a href="https://coveralls.io/github/moove-it/sidekiq-scheduler?branch=master">
20
- <img src="https://coveralls.io/repos/moove-it/sidekiq-scheduler/badge.svg?branch=master&service=github" alt="Coverage Status">
21
- </a>
22
- <a href="https://inch-ci.org/github/moove-it/sidekiq-scheduler">
23
- <img src="https://inch-ci.org/github/moove-it/sidekiq-scheduler.svg?branch=master" alt="Documentation Coverage">
24
- </a>
25
- <a href="http://www.rubydoc.info/github/moove-it/sidekiq-scheduler">
13
+ <a href="http://www.rubydoc.info/github/sidekiq-scheduler/sidekiq-scheduler">
26
14
  <img src="https://img.shields.io/badge/yard-docs-blue.svg" alt="Documentation">
27
15
  </a>
28
16
  </p>
@@ -30,7 +18,7 @@
30
18
  `sidekiq-scheduler` is an extension to [Sidekiq](http://github.com/mperham/sidekiq) that
31
19
  pushes jobs in a scheduled way, mimicking cron utility.
32
20
 
33
- __Note:__ If you are looking for version 2.2.*, go to [2.2-stable branch](https://github.com/moove-it/sidekiq-scheduler/tree/2.2-stable).
21
+ __Note:__ Current branch contains work of the v4 release, if you are looking for version 2.2.* or 3.*, go to [2.2-stable branch](https://github.com/sidekiq-scheduler/sidekiq-scheduler/tree/2.2-stable) / [v3-stable](https://github.com/sidekiq-scheduler/sidekiq-scheduler/tree/v3-stable).
34
22
 
35
23
  ## Installation
36
24
 
@@ -100,6 +88,7 @@ Available options are:
100
88
  :enabled: <enables scheduler if true [true by default]>
101
89
  :scheduler:
102
90
  :listened_queues_only: <push jobs whose queue is being listened by sidekiq [false by default]>
91
+ :rufus_scheduler_options: <Set custom options for rufus scheduler, like max_work_threads [{} by default]>
103
92
  ```
104
93
 
105
94
  ## Schedule configuration
@@ -304,10 +293,16 @@ If you're configuring your own Redis connection pool, you need to make sure the
304
293
 
305
294
  That's a minimum of `concurrency` + 5 (per the [Sidekiq wiki](https://github.com/mperham/sidekiq/wiki/Using-Redis#complete-control)) + `Rufus::Scheduler::MAX_WORK_THREADS` (28 as of this writing; per the [Rufus README](https://github.com/jmettraux/rufus-scheduler#max_work_threads)), for a total of 58 with the default `concurrency` of 25.
306
295
 
307
- You can also override the thread pool size in Rufus Scheduler by setting e.g.:
296
+ You can also override the thread pool size in Rufus Scheduler by setting the following in your `sidekiq.yml` config:
308
297
 
309
- ```
310
- SidekiqScheduler::Scheduler.instance.rufus_scheduler_options = { max_work_threads: 5 }
298
+ ```yaml
299
+ ---
300
+ ...
301
+
302
+ rufus_scheduler_options:
303
+ max_work_threads: 5
304
+
305
+ ...
311
306
  ```
312
307
 
313
308
  ## Notes about running on Multiple Hosts
@@ -321,7 +316,7 @@ Non-normal conditions that could push a specific job multiple times are:
321
316
 
322
317
  `every`, `interval` and `in` jobs will be pushed once per host.
323
318
 
324
- ## Notes on when sidekiq worker is down
319
+ ## Notes on when Sidekiq worker is down
325
320
 
326
321
  For a `cron`/`at` (and all other) job to be successfully enqueued, you need at least one sidekiq worker with scheduler to be up at that moment. Handling this is up to you and depends on your application.
327
322
 
@@ -334,6 +329,54 @@ Possible solutions include:
334
329
 
335
330
  Each option has it's own pros and cons.
336
331
 
332
+ ## Notes when running multiple Sidekiq processors on the same Redis
333
+
334
+ ### TL;DR
335
+
336
+ Be **sure** to include the `:enabled: false` top-level key on any additional
337
+ configurations to avoid any possibility of the `schedules` definition being
338
+ wiped by the second Sidekiq process.
339
+
340
+ To illustrate what we mean:
341
+
342
+ Say you have one process with the schedule:
343
+ ```yaml
344
+ # e.g., config/sidekiq.yml
345
+
346
+ :queues:
347
+ - default
348
+ :schedule:
349
+ do_something_every_minute:
350
+ class: DoSomethingJob
351
+ args: matey
352
+ queue: :scheduler
353
+ cron: '0 * * * * * America/Los_Angeles'
354
+ ```
355
+
356
+ And a separate separate configured process without one:
357
+ ```yaml
358
+ # e.g., config/sidekiq_other.yml
359
+ :queues:
360
+ - scheduler
361
+
362
+ ## NOTE Disable the Scheduler
363
+ :enabled: false
364
+ ```
365
+
366
+ ### Details
367
+
368
+ This gem stores the configured schedule in Redis on boot. It's used, primarily,
369
+ to display in the Web Integration, and allow you to interact with that schedule
370
+ via that integration.
371
+
372
+ If you're running multiple Sidekiq processes on the same Redis namespace with
373
+ different configurations, **you'll want to explicitly _disable_ Sidekiq
374
+ Scheduler** for the other processes not responsible for the schedule. If you
375
+ don't, the last booted Sidekiq processes' schedule will be what is stored in
376
+ Redis.
377
+
378
+ See https://github.com/sidekiq-scheduler/sidekiq-scheduler/issues/361 for a more details.
379
+
337
380
  ## Sidekiq Web Integration
338
381
 
339
382
  sidekiq-scheduler provides an extension to the Sidekiq web interface that adds a `Recurring Jobs` page.
@@ -347,7 +390,7 @@ require 'sidekiq-scheduler/web'
347
390
  run Sidekiq::Web
348
391
  ```
349
392
 
350
- ![Sidekiq Web Integration](https://github.com/moove-it/sidekiq-scheduler/raw/master/images/recurring-jobs-ui-tab.png)
393
+ ![Sidekiq Web Integration](https://github.com/sidekiq-scheduler/sidekiq-scheduler/raw/master/images/recurring-jobs-ui-tab.png)
351
394
 
352
395
  ## ActiveJob integration
353
396
 
@@ -371,7 +414,7 @@ To see your updated schedule, be sure to reload Spring by stopping it prior to b
371
414
 
372
415
  Run `spring stop` to stop Spring.
373
416
 
374
- For more information, see [this issue](https://github.com/Moove-it/sidekiq-scheduler/issues/35#issuecomment-48067183) and [Spring's README](https://github.com/rails/spring/blob/master/README.md).
417
+ For more information, see [this issue](https://github.com/sidekiq-scheduler/sidekiq-scheduler/issues/35#issuecomment-48067183) and [Spring's README](https://github.com/rails/spring/blob/master/README.md).
375
418
 
376
419
 
377
420
  ## Manage tasks from Unicorn/Rails server
@@ -408,6 +451,7 @@ MIT License
408
451
 
409
452
  ## Copyright
410
453
 
411
- Copyright 2013 - 2018 Moove-IT.
412
- Copyright 2012 Morton Jonuschat.
413
- Some parts copyright 2010 Ben VandenBos.
454
+ - Copyright 2021 - 2022 Marcelo Lauxen.
455
+ - Copyright 2013 - 2022 Moove-IT.
456
+ - Copyright 2012 Morton Jonuschat.
457
+ - Some parts copyright 2010 Ben VandenBos.
@@ -5,7 +5,10 @@ ASSETS_PATH = File.expand_path('../../../web/assets', __dir__)
5
5
  Sidekiq::Web.register(SidekiqScheduler::Web)
6
6
  Sidekiq::Web.tabs['recurring_jobs'] = 'recurring-jobs'
7
7
  Sidekiq::Web.locales << File.expand_path("#{File.dirname(__FILE__)}/../../../web/locales")
8
- Sidekiq::Web.use Rack::Static, urls: ['/stylesheets'],
9
- root: ASSETS_PATH,
10
- cascade: true,
11
- header_rules: [[:all, { 'Cache-Control' => 'public, max-age=86400' }]]
8
+
9
+ if Sidekiq::VERSION >= '6.0.0'
10
+ Sidekiq::Web.use Rack::Static, urls: ['/stylesheets'],
11
+ root: ASSETS_PATH,
12
+ cascade: true,
13
+ header_rules: [[:all, { 'Cache-Control' => 'public, max-age=86400' }]]
14
+ end
@@ -1,7 +1,5 @@
1
1
  require 'redis'
2
2
 
3
- require 'sidekiq/util'
4
-
5
3
  require 'sidekiq-scheduler/schedule'
6
4
  require 'sidekiq-scheduler/scheduler'
7
5
 
@@ -12,8 +10,6 @@ module SidekiqScheduler
12
10
  # from Redis onto the work queues
13
11
  #
14
12
  class Manager
15
- include Sidekiq::Util
16
-
17
13
  DEFAULT_SCHEDULER_OPTIONS = {
18
14
  enabled: true,
19
15
  dynamic: false,
@@ -9,7 +9,7 @@ module SidekiqScheduler
9
9
  #
10
10
  # @return [String] schedule in JSON format
11
11
  def self.get_job_schedule(name)
12
- hget(:schedules, name)
12
+ hget('schedules', name)
13
13
  end
14
14
 
15
15
  # Returns the state of a given job
@@ -44,7 +44,7 @@ module SidekiqScheduler
44
44
  # @param [String] name The name of the job
45
45
  # @param [Hash] config The new schedule for the job
46
46
  def self.set_job_schedule(name, config)
47
- hset(:schedules, name, JSON.generate(config))
47
+ hset('schedules', name, JSON.generate(config))
48
48
  end
49
49
 
50
50
  # Sets the state for a given job
@@ -75,7 +75,7 @@ module SidekiqScheduler
75
75
  #
76
76
  # @param [String] name The name of the job
77
77
  def self.remove_job_schedule(name)
78
- hdel(:schedules, name)
78
+ hdel('schedules', name)
79
79
  end
80
80
 
81
81
  # Removes the next execution time for a given job
@@ -89,21 +89,14 @@ module SidekiqScheduler
89
89
  #
90
90
  # @return [Hash] hash with all the job schedules
91
91
  def self.get_all_schedules
92
- Sidekiq.redis { |r| r.hgetall(:schedules) }
92
+ Sidekiq.redis { |r| r.hgetall('schedules') }
93
93
  end
94
94
 
95
95
  # Returns boolean value that indicates if the schedules value exists
96
96
  #
97
97
  # @return [Boolean] true if the schedules key is set, false otherwise
98
98
  def self.schedule_exist?
99
- Sidekiq.redis do |r|
100
- case r.exists(:schedules)
101
- when true, 1
102
- true
103
- else
104
- false
105
- end
106
- end
99
+ Sidekiq.redis { |r| r.exists?('schedules') }
107
100
  end
108
101
 
109
102
  # Returns all the schedule changes for a given time range.
@@ -113,19 +106,19 @@ module SidekiqScheduler
113
106
  #
114
107
  # @return [Array] array with all the changed job names
115
108
  def self.get_schedule_changes(from, to)
116
- Sidekiq.redis { |r| r.zrangebyscore(:schedules_changed, from, "(#{to}") }
109
+ Sidekiq.redis { |r| r.zrangebyscore('schedules_changed', from, "(#{to}") }
117
110
  end
118
111
 
119
112
  # Register a schedule change for a given job
120
113
  #
121
114
  # @param [String] name The name of the job
122
115
  def self.add_schedule_change(name)
123
- Sidekiq.redis { |r| r.zadd(:schedules_changed, Time.now.to_f, name) }
116
+ Sidekiq.redis { |r| r.zadd('schedules_changed', Time.now.to_f, name) }
124
117
  end
125
118
 
126
119
  # Remove all the schedule changes records
127
120
  def self.clean_schedules_changed
128
- Sidekiq.redis { |r| r.del(:schedules_changed) unless r.type(:schedules_changed) == 'zset' }
121
+ Sidekiq.redis { |r| r.del('schedules_changed') unless r.type('schedules_changed') == 'zset' }
129
122
  end
130
123
 
131
124
  # Removes a queued job instance
@@ -137,9 +130,9 @@ module SidekiqScheduler
137
130
  def self.register_job_instance(job_name, time)
138
131
  job_key = pushed_job_key(job_name)
139
132
  registered, _ = Sidekiq.redis do |r|
140
- r.pipelined do
141
- r.zadd(job_key, time.to_i, time.to_i)
142
- r.expire(job_key, REGISTERED_JOBS_THRESHOLD_IN_SECONDS)
133
+ r.pipelined do |pipeline|
134
+ pipeline.zadd(job_key, time.to_i, time.to_i)
135
+ pipeline.expire(job_key, REGISTERED_JOBS_THRESHOLD_IN_SECONDS)
143
136
  end
144
137
  end
145
138
 
@@ -188,7 +181,7 @@ module SidekiqScheduler
188
181
  end
189
182
 
190
183
  private
191
-
184
+
192
185
  # Returns the value of a Redis stored hash field
193
186
  #
194
187
  # @param [String] hash_key The key name of the hash
@@ -140,7 +140,9 @@ module SidekiqScheduler
140
140
  def infer_queue(klass)
141
141
  klass = try_to_constantize(klass)
142
142
 
143
- if klass.respond_to?(:sidekiq_options)
143
+ # ActiveJob uses queue_as when the job is created
144
+ # to determine the queue
145
+ if klass.respond_to?(:sidekiq_options) && !SidekiqScheduler::Utils.active_job_enqueue?(klass)
144
146
  klass.sidekiq_options['queue']
145
147
  end
146
148
  end
@@ -1,14 +1,10 @@
1
1
  require 'rufus/scheduler'
2
- require 'thwait'
3
- require 'sidekiq/util'
4
2
  require 'json'
5
3
  require 'sidekiq-scheduler/rufus_utils'
6
4
  require 'sidekiq-scheduler/redis_manager'
7
5
 
8
6
  module SidekiqScheduler
9
7
  class Scheduler
10
- extend Sidekiq::Util
11
-
12
8
  # We expect rufus jobs to have #params
13
9
  Rufus::Scheduler::Job.module_eval do
14
10
  alias_method :params, :opts
@@ -26,6 +22,9 @@ module SidekiqScheduler
26
22
  # Set to schedule jobs only when will be pushed to queues listened by sidekiq
27
23
  attr_accessor :listened_queues_only
28
24
 
25
+ # Set custom options for rufus scheduler, like max_work_threads.
26
+ attr_accessor :rufus_scheduler_options
27
+
29
28
  class << self
30
29
 
31
30
  def instance
@@ -47,6 +46,7 @@ module SidekiqScheduler
47
46
  self.dynamic = options[:dynamic]
48
47
  self.dynamic_every = options[:dynamic_every]
49
48
  self.listened_queues_only = options[:listened_queues_only]
49
+ self.rufus_scheduler_options = options[:rufus_scheduler_options] || {}
50
50
  end
51
51
 
52
52
  # the Rufus::Scheduler jobs that are scheduled
@@ -57,7 +57,7 @@ module SidekiqScheduler
57
57
  def print_schedule
58
58
  if rufus_scheduler
59
59
  Sidekiq.logger.info "Scheduling Info\tLast Run"
60
- scheduler_jobs = rufus_scheduler.all_jobs
60
+ scheduler_jobs = rufus_scheduler.jobs
61
61
  scheduler_jobs.each_value do |v|
62
62
  Sidekiq.logger.info "#{v.t}\t#{v.last}\t"
63
63
  end
@@ -161,21 +161,13 @@ module SidekiqScheduler
161
161
  config['args'] = arguments_with_metadata(config['args'], scheduled_at: time.to_f)
162
162
  end
163
163
 
164
- if active_job_enqueue?(config['class'])
164
+ if SidekiqScheduler::Utils.active_job_enqueue?(config['class'])
165
165
  SidekiqScheduler::Utils.enqueue_with_active_job(config)
166
166
  else
167
167
  SidekiqScheduler::Utils.enqueue_with_sidekiq(config)
168
168
  end
169
169
  end
170
170
 
171
- def rufus_scheduler_options
172
- @rufus_scheduler_options ||= {}
173
- end
174
-
175
- def rufus_scheduler_options=(options)
176
- @rufus_scheduler_options = options
177
- end
178
-
179
171
  def rufus_scheduler
180
172
  @rufus_scheduler ||= SidekiqScheduler::Utils.new_rufus_scheduler(rufus_scheduler_options)
181
173
  end
@@ -292,7 +284,11 @@ module SidekiqScheduler
292
284
  end
293
285
 
294
286
  def sidekiq_queues
295
- Sidekiq.options[:queues].map(&:to_s)
287
+ if SIDEKIQ_GTE_6_5_0
288
+ Sidekiq[:queues].map(&:to_s)
289
+ else
290
+ Sidekiq.options[:queues].map(&:to_s)
291
+ end
296
292
  end
297
293
 
298
294
  # Returns true if a job's queue is included in the array of queues
@@ -307,17 +303,6 @@ module SidekiqScheduler
307
303
  queues.empty? || queues.include?(job_queue)
308
304
  end
309
305
 
310
- # Returns true if the enqueuing needs to be done for an ActiveJob
311
- # class false otherwise.
312
- #
313
- # @param [Class] klass the class to check is decendant from ActiveJob
314
- #
315
- # @return [Boolean]
316
- def active_job_enqueue?(klass)
317
- klass.is_a?(Class) && defined?(ActiveJob::Enqueuing) &&
318
- klass.included_modules.include?(ActiveJob::Enqueuing)
319
- end
320
-
321
306
  # Convert the given arguments in the format expected to be enqueued.
322
307
  #
323
308
  # @param [Hash] config the options to be converted
@@ -68,6 +68,17 @@ module SidekiqScheduler
68
68
  end
69
69
  end
70
70
 
71
+ # Returns true if the enqueuing needs to be done for an ActiveJob
72
+ # class false otherwise.
73
+ #
74
+ # @param [Class] klass the class to check is decendant from ActiveJob
75
+ #
76
+ # @return [Boolean]
77
+ def self.active_job_enqueue?(klass)
78
+ klass.is_a?(Class) && defined?(ActiveJob::Enqueuing) &&
79
+ klass.included_modules.include?(ActiveJob::Enqueuing)
80
+ end
81
+
71
82
  # Enqueues the job using the Sidekiq client.
72
83
  #
73
84
  # @param [Hash] config The job configuration
@@ -1,5 +1,3 @@
1
1
  module SidekiqScheduler
2
-
3
- VERSION = '3.1.1'
4
-
2
+ VERSION = "4.0.2"
5
3
  end
@@ -7,19 +7,33 @@ require_relative 'sidekiq-scheduler/manager'
7
7
  require_relative 'sidekiq-scheduler/redis_manager'
8
8
  require_relative 'sidekiq-scheduler/extensions/schedule'
9
9
 
10
+ SIDEKIQ_GTE_6_5_0 = Gem::Version.new(Sidekiq::VERSION) >= Gem::Version.new('6.5.0')
11
+
10
12
  Sidekiq.configure_server do |config|
11
13
 
12
14
  config.on(:startup) do
13
15
  # schedules_changed's type was changed from SET to ZSET, so we remove old versions at startup
14
16
  SidekiqScheduler::RedisManager.clean_schedules_changed
15
17
 
16
- schedule_manager = SidekiqScheduler::Manager.new(config.options)
17
- config.options[:schedule_manager] = schedule_manager
18
- config.options[:schedule_manager].start
18
+ # Accessing the raw @config hash through .options is deprecated in 6.5 and to be removed in 7.0
19
+ config_options = SIDEKIQ_GTE_6_5_0 ? Sidekiq.instance_variable_get(:@config) : config.options
20
+
21
+ schedule_manager = SidekiqScheduler::Manager.new(config_options)
22
+ if SIDEKIQ_GTE_6_5_0
23
+ config[:schedule_manager] = schedule_manager
24
+ config[:schedule_manager].start
25
+ else
26
+ config.options[:schedule_manager] = schedule_manager
27
+ config.options[:schedule_manager].start
28
+ end
19
29
  end
20
30
 
21
31
  config.on(:quiet) do
22
- config.options[:schedule_manager].stop
32
+ if SIDEKIQ_GTE_6_5_0
33
+ config[:schedule_manager].stop
34
+ else
35
+ config.options[:schedule_manager].stop
36
+ end
23
37
  end
24
38
 
25
39
  end
@@ -14,6 +14,10 @@
14
14
  border: 1px solid rgba(0, 0, 0, 0.1);
15
15
  }
16
16
 
17
+ .list-group-item-disabled {
18
+ background-color: #f3d3d3;
19
+ }
20
+
17
21
  @media (prefers-color-scheme: dark) {
18
22
  .list-group-item {
19
23
  background-color: #222;
@@ -1,11 +1,35 @@
1
- <link href="<%= root_path %>stylesheets/recurring_jobs.css" media="screen" rel="stylesheet" type="text/css" />
1
+ <% if Sidekiq::VERSION >= '6.0.0' %>
2
+ <link href="<%= root_path %>stylesheets/recurring_jobs.css" media="screen" rel="stylesheet" type="text/css" />
3
+ <% else %>
4
+ <style>
5
+ .recurring-jobs { border-top-left-radius: 4px; border-top-right-radius: 4px; }
6
+ .recurring-jobs .title { margin-bottom: 5px; }
7
+ .recurring-jobs .title .name { font-weight: bold;}
8
+ .recurring-jobs .info,
9
+ .recurring-jobs .description { margin-bottom: 5px; }
10
+ .recurring-jobs .actions { margin-bottom: 5px; }
11
+ .recurring-jobs .status,
12
+ .recurring-jobs .description { font-size: 12px; }
13
+ .recurring-jobs .enqueue { margin-bottom: 0.5rem }
14
+
15
+ .list-group-item {
16
+ background-color: #f3f3f3;
17
+ color: #585454;
18
+ border: 1px solid rgba(0, 0, 0, 0.1);
19
+ }
20
+
21
+ .list-group-item-disabled {
22
+ background-color: #f3d3d3;
23
+ }
24
+ </style>
25
+ <% end %>
2
26
 
3
27
  <h3><%= t('recurring_jobs') %></h3>
4
28
 
5
29
  <div class="recurring-jobs">
6
30
  <ul class="list-group">
7
31
  <% @presented_jobs.each do |job| %>
8
- <li class="list-group-item">
32
+ <li class="list-group-item <%= !job.enabled? && "list-group-item-disabled" %>">
9
33
  <div class="title">
10
34
  <div class="row">
11
35
  <div class="col-xs-6">
metadata CHANGED
@@ -1,15 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sidekiq-scheduler
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.1.1
4
+ version: 4.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Morton Jonuschat
8
8
  - Moove-it
9
+ - Marcelo Lauxen
9
10
  autorequire:
10
11
  bindir: bin
11
12
  cert_chain: []
12
- date: 2022-01-26 00:00:00.000000000 Z
13
+ date: 2022-06-27 00:00:00.000000000 Z
13
14
  dependencies:
14
15
  - !ruby/object:Gem::Dependency
15
16
  name: sidekiq
@@ -17,34 +18,28 @@ dependencies:
17
18
  requirements:
18
19
  - - ">="
19
20
  - !ruby/object:Gem::Version
20
- version: '3'
21
+ version: '4'
21
22
  type: :runtime
22
23
  prerelease: false
23
24
  version_requirements: !ruby/object:Gem::Requirement
24
25
  requirements:
25
26
  - - ">="
26
27
  - !ruby/object:Gem::Version
27
- version: '3'
28
+ version: '4'
28
29
  - !ruby/object:Gem::Dependency
29
30
  name: redis
30
31
  requirement: !ruby/object:Gem::Requirement
31
32
  requirements:
32
33
  - - ">="
33
34
  - !ruby/object:Gem::Version
34
- version: '3'
35
- - - "<"
36
- - !ruby/object:Gem::Version
37
- version: '5'
35
+ version: 4.2.0
38
36
  type: :runtime
39
37
  prerelease: false
40
38
  version_requirements: !ruby/object:Gem::Requirement
41
39
  requirements:
42
40
  - - ">="
43
41
  - !ruby/object:Gem::Version
44
- version: '3'
45
- - - "<"
46
- - !ruby/object:Gem::Version
47
- version: '5'
42
+ version: 4.2.0
48
43
  - !ruby/object:Gem::Dependency
49
44
  name: rufus-scheduler
50
45
  requirement: !ruby/object:Gem::Requirement
@@ -73,34 +68,6 @@ dependencies:
73
68
  - - ">="
74
69
  - !ruby/object:Gem::Version
75
70
  version: 1.4.0
76
- - !ruby/object:Gem::Dependency
77
- name: thwait
78
- requirement: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - ">="
81
- - !ruby/object:Gem::Version
82
- version: '0'
83
- type: :runtime
84
- prerelease: false
85
- version_requirements: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - ">="
88
- - !ruby/object:Gem::Version
89
- version: '0'
90
- - !ruby/object:Gem::Dependency
91
- name: e2mmap
92
- requirement: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - ">="
95
- - !ruby/object:Gem::Version
96
- version: '0'
97
- type: :runtime
98
- prerelease: false
99
- version_requirements: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - ">="
102
- - !ruby/object:Gem::Version
103
- version: '0'
104
71
  - !ruby/object:Gem::Dependency
105
72
  name: rake
106
73
  requirement: !ruby/object:Gem::Requirement
@@ -119,28 +86,28 @@ dependencies:
119
86
  name: timecop
120
87
  requirement: !ruby/object:Gem::Requirement
121
88
  requirements:
122
- - - "~>"
89
+ - - ">="
123
90
  - !ruby/object:Gem::Version
124
91
  version: '0'
125
92
  type: :development
126
93
  prerelease: false
127
94
  version_requirements: !ruby/object:Gem::Requirement
128
95
  requirements:
129
- - - "~>"
96
+ - - ">="
130
97
  - !ruby/object:Gem::Version
131
98
  version: '0'
132
99
  - !ruby/object:Gem::Dependency
133
100
  name: mocha
134
101
  requirement: !ruby/object:Gem::Requirement
135
102
  requirements:
136
- - - "~>"
103
+ - - ">="
137
104
  - !ruby/object:Gem::Version
138
105
  version: '0'
139
106
  type: :development
140
107
  prerelease: false
141
108
  version_requirements: !ruby/object:Gem::Requirement
142
109
  requirements:
143
- - - "~>"
110
+ - - ">="
144
111
  - !ruby/object:Gem::Version
145
112
  version: '0'
146
113
  - !ruby/object:Gem::Dependency
@@ -163,30 +130,16 @@ dependencies:
163
130
  requirements:
164
131
  - - "~>"
165
132
  - !ruby/object:Gem::Version
166
- version: 0.19.0
133
+ version: 0.28.0
167
134
  type: :development
168
135
  prerelease: false
169
136
  version_requirements: !ruby/object:Gem::Requirement
170
137
  requirements:
171
138
  - - "~>"
172
139
  - !ruby/object:Gem::Version
173
- version: 0.19.0
140
+ version: 0.28.0
174
141
  - !ruby/object:Gem::Dependency
175
142
  name: simplecov
176
- requirement: !ruby/object:Gem::Requirement
177
- requirements:
178
- - - "~>"
179
- - !ruby/object:Gem::Version
180
- version: '0'
181
- type: :development
182
- prerelease: false
183
- version_requirements: !ruby/object:Gem::Requirement
184
- requirements:
185
- - - "~>"
186
- - !ruby/object:Gem::Version
187
- version: '0'
188
- - !ruby/object:Gem::Dependency
189
- name: byebug
190
143
  requirement: !ruby/object:Gem::Requirement
191
144
  requirements:
192
145
  - - ">="
@@ -200,7 +153,7 @@ dependencies:
200
153
  - !ruby/object:Gem::Version
201
154
  version: '0'
202
155
  - !ruby/object:Gem::Dependency
203
- name: activejob
156
+ name: byebug
204
157
  requirement: !ruby/object:Gem::Requirement
205
158
  requirements:
206
159
  - - ">="
@@ -214,7 +167,7 @@ dependencies:
214
167
  - !ruby/object:Gem::Version
215
168
  version: '0'
216
169
  - !ruby/object:Gem::Dependency
217
- name: coveralls
170
+ name: activejob
218
171
  requirement: !ruby/object:Gem::Requirement
219
172
  requirements:
220
173
  - - ">="
@@ -259,10 +212,12 @@ description: Light weight job scheduling extension for Sidekiq that adds support
259
212
  queueing jobs in a recurring way.
260
213
  email:
261
214
  - sidekiq-scheduler@moove-it.com
215
+ - marcelolauxen16@gmail.com
262
216
  executables: []
263
217
  extensions: []
264
218
  extra_rdoc_files: []
265
219
  files:
220
+ - CHANGELOG.md
266
221
  - MIT-LICENSE
267
222
  - README.md
268
223
  - Rakefile
@@ -294,7 +249,7 @@ files:
294
249
  - web/locales/sv.yml
295
250
  - web/locales/zh-cn.yml
296
251
  - web/views/recurring_jobs.erb
297
- homepage: https://moove-it.github.io/sidekiq-scheduler/
252
+ homepage: https://sidekiq-scheduler.github.io/sidekiq-scheduler/
298
253
  licenses:
299
254
  - MIT
300
255
  metadata: {}
@@ -306,7 +261,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
306
261
  requirements:
307
262
  - - ">="
308
263
  - !ruby/object:Gem::Version
309
- version: '0'
264
+ version: '2.5'
310
265
  required_rubygems_version: !ruby/object:Gem::Requirement
311
266
  requirements:
312
267
  - - ">="