sidekiq-cron 1.9.1 → 1.10.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: 4d751ce0280b4d30f1f43a1e0ed973166c2f398d7ac976e6fea267e66e999bb8
4
- data.tar.gz: 352b64238d89eb4eedb0e9c046f9d54f6f298c376804de1066cbdad3481c43af
3
+ metadata.gz: f484cd18cea7b3b00d83b82c5ae6ca7e2c831b22ed4d00cd77a19cfc9491b49d
4
+ data.tar.gz: efe62165d5c2b02b4ee2ce7f1ac877cda1bd06d550f4554fbb340b491f8d1319
5
5
  SHA512:
6
- metadata.gz: ee7843b8dd62b31954de3db17c4cef76229050d2c4590bde276c77d6ad2c96bbb523620631ad41574d4b976ace4da6425130b1aa5c4a20986c4d42fdcdde1ef4
7
- data.tar.gz: 95e74c836bdae7eb10fe1fe540fdc91ecb730c3a73bc1dd7e578d9324cf448e32054e9ad1b487036119076e966b0df1011978aa34b9215a334d996759d4bb684
6
+ metadata.gz: a945824e3d39d8f54a33c68eec458f3dee68be2cd43ddf697b7fdd568afff291ff62ee1ec8cf2bbc05e26ddfa6e8230c78a953499b59b6844ca60b37f55ffc99
7
+ data.tar.gz: 2aa57d5d1e2b4ba98199bf79e13d49b7726478650ef46efa92871e0c13b51608829bc66159d8ed5a2cd58f4b6d5dcb3a6e87329795e604309fc60ba85b583758
data/CHANGELOG.md CHANGED
@@ -2,6 +2,16 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file.
4
4
 
5
+ ## 1.10.0
6
+
7
+ - Remove EOL Ruby 2.6 support (https://github.com/sidekiq-cron/sidekiq-cron/pull/399)
8
+ - Add a logo for the project! (https://github.com/sidekiq-cron/sidekiq-cron/pull/402)
9
+ - Added support for ActiveRecord serialize/deserialize using GlobalID (https://github.com/sidekiq-cron/sidekiq-cron/pull/395)
10
+ - Allow for keyword args (`embedded: true`) in Poller (https://github.com/sidekiq-cron/sidekiq-cron/pull/398)
11
+ - Make last_enqueue_time be always an instance of Time (https://github.com/sidekiq-cron/sidekiq-cron/pull/354)
12
+ - Fix argument error problem update from 1.6.0 to newer (https://github.com/sidekiq-cron/sidekiq-cron/pull/392)
13
+ - Clear old jobs while loading the jobs from schedule via the schedule loader (https://github.com/sidekiq-cron/sidekiq-cron/pull/405)
14
+
5
15
  ## 1.9.1
6
16
 
7
17
  - Always enqueue via Active Job interface when defined in cron job config (https://github.com/sidekiq-cron/sidekiq-cron/pull/381)
data/Gemfile CHANGED
@@ -1,3 +1,6 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
3
  gemspec
4
+
5
+ # To test different Sidekiq versions
6
+ gem "sidekiq", ENV.fetch("SIDEKIQ_VERSION", ">= 6")
data/README.md CHANGED
@@ -1,8 +1,8 @@
1
- # Sidekiq-Cron
1
+ ![Sidekiq-Cron](logos/cover.png)
2
2
 
3
3
  [![Gem Version](https://badge.fury.io/rb/sidekiq-cron.svg)](https://badge.fury.io/rb/sidekiq-cron)
4
4
  [![Build Status](https://github.com/sidekiq-cron/sidekiq-cron/workflows/CI/badge.svg?branch=master)](https://github.com/sidekiq-cron/sidekiq-cron/actions)
5
- [![Coverage Status](https://coveralls.io/repos/github/ondrejbartas/sidekiq-cron/badge.svg?branch=master)](https://coveralls.io/github/ondrejbartas/sidekiq-cron?branch=master)
5
+ [![codecov](https://codecov.io/gh/sidekiq-cron/sidekiq-cron/branch/master/graph/badge.svg?token=VK9IVLIaY8)](https://codecov.io/gh/sidekiq-cron/sidekiq-cron)
6
6
 
7
7
  > A scheduling add-on for [Sidekiq](https://sidekiq.org/)
8
8
 
@@ -26,12 +26,6 @@ Before upgrading to a new version, please read our [Changelog](CHANGELOG.md).
26
26
 
27
27
  ## Installation
28
28
 
29
- ### Requirements
30
-
31
- - Redis 2.8 or greater is required (Redis 3.0.3 or greater is recommended for large scale use)
32
- - Sidekiq 4.2 or greater is required (for Sidekiq < 4 use version sidekiq-cron 0.3.1)
33
- - Sidekiq 6.5 requires Sidekiq-Cron 1.5+
34
-
35
29
  Install the gem:
36
30
 
37
31
  ```
@@ -171,6 +165,26 @@ unless job.save
171
165
  end
172
166
  ```
173
167
 
168
+ Use ActiveRecord models as arguments
169
+
170
+ ```rb
171
+ class Person < ApplicationRecord
172
+ end
173
+
174
+ class HardWorker < ActiveJob::Base
175
+ queue_as :default
176
+
177
+ def perform(person)
178
+ puts "person: #{person}"
179
+ end
180
+ end
181
+
182
+
183
+ person = Person.create(id: 1)
184
+ Sidekiq::Cron::Job.create(name: 'Hard worker - every 5min', cron: '*/5 * * * *', class: 'HardWorker', args: person)
185
+ # => true
186
+ ```
187
+
174
188
  Load more jobs from hash:
175
189
 
176
190
  ```ruby
@@ -316,7 +330,7 @@ add `require 'sidekiq/cron/web'` after `require 'sidekiq/web'`.
316
330
 
317
331
  With this, you will get:
318
332
 
319
- ![Web UI](examples/web-cron-ui.jpeg)
333
+ ![Web UI](docs/images/web-cron-ui.jpeg)
320
334
 
321
335
  ## Under the hood
322
336
 
@@ -1,4 +1,5 @@
1
1
  require 'fugit'
2
+ require 'globalid'
2
3
  require 'sidekiq'
3
4
  require 'sidekiq/cron/support'
4
5
  require 'sidekiq/options'
@@ -15,6 +16,9 @@ module Sidekiq
15
16
  # Use the exists? method if we're on a newer version of Redis.
16
17
  REDIS_EXISTS_METHOD = Gem::Version.new(Sidekiq::VERSION) >= Gem::Version.new("7.0.0") || Gem.loaded_specs['redis'].version < Gem::Version.new('4.2') ? :exists : :exists?
17
18
 
19
+ # Use serialize/deserialize key of GlobalID.
20
+ GLOBALID_KEY = "_sc_globalid"
21
+
18
22
  # Crucial part of whole enqueuing job.
19
23
  def should_enque? time
20
24
  enqueue = Sidekiq.redis do |conn|
@@ -45,7 +49,7 @@ module Sidekiq
45
49
 
46
50
  # Enqueue cron job to queue.
47
51
  def enque! time = Time.now.utc
48
- @last_enqueue_time = time.strftime(LAST_ENQUEUE_TIME_FORMAT)
52
+ @last_enqueue_time = time
49
53
 
50
54
  klass_const =
51
55
  begin
@@ -85,7 +89,8 @@ module Sidekiq
85
89
  end
86
90
 
87
91
  def enqueue_args
88
- date_as_argument? ? @args + [Time.now.to_f] : @args
92
+ args = date_as_argument? ? @args + [Time.now.to_f] : @args
93
+ deserialize_argument(args)
89
94
  end
90
95
 
91
96
  def enqueue_active_job(klass_const)
@@ -398,21 +403,26 @@ module Sidekiq
398
403
 
399
404
  # Export job data to hash.
400
405
  def to_hash
401
- {
406
+ hash = {
402
407
  name: @name,
403
408
  klass: @klass.to_s,
404
409
  cron: @cron,
405
410
  description: @description,
406
411
  args: @args.is_a?(String) ? @args : Sidekiq.dump_json(@args || []),
407
- date_as_argument: date_as_argument? ? "1" : "0",
408
412
  message: @message.is_a?(String) ? @message : Sidekiq.dump_json(@message || {}),
409
413
  status: @status,
410
414
  active_job: @active_job ? "1" : "0",
411
415
  queue_name_prefix: @active_job_queue_name_prefix,
412
416
  queue_name_delimiter: @active_job_queue_name_delimiter,
413
- last_enqueue_time: @last_enqueue_time.to_s,
417
+ last_enqueue_time: serialized_last_enqueue_time,
414
418
  symbolize_args: symbolize_args? ? "1" : "0",
415
419
  }
420
+
421
+ if date_as_argument?
422
+ hash.merge!(date_as_argument: "1")
423
+ end
424
+
425
+ hash
416
426
  end
417
427
 
418
428
  def errors
@@ -472,7 +482,7 @@ module Sidekiq
472
482
  def save_last_enqueue_time
473
483
  Sidekiq.redis do |conn|
474
484
  # Update last enqueue time.
475
- conn.hset redis_key, 'last_enqueue_time', @last_enqueue_time
485
+ conn.hset redis_key, 'last_enqueue_time', serialized_last_enqueue_time
476
486
  end
477
487
  end
478
488
 
@@ -569,6 +579,8 @@ module Sidekiq
569
579
  # try to load JSON, then failover to string array.
570
580
  def parse_args(args)
571
581
  case args
582
+ when GlobalID::Identification
583
+ [convert_to_global_id_hash(args)]
572
584
  when String
573
585
  begin
574
586
  parsed_args = Sidekiq.load_json(args)
@@ -577,8 +589,10 @@ module Sidekiq
577
589
  [*args]
578
590
  end
579
591
  when Hash
592
+ args = serialize_argument(args)
580
593
  symbolize_args? ? [symbolize_args(args)] : [args]
581
594
  when Array
595
+ args = serialize_argument(args)
582
596
  symbolize_args? ? symbolize_args(args) : args
583
597
  else
584
598
  [*args]
@@ -653,6 +667,57 @@ module Sidekiq
653
667
  def hash_to_redis hash
654
668
  hash.flat_map{ |key, value| [key, value || ""] }
655
669
  end
670
+
671
+ def serialized_last_enqueue_time
672
+ @last_enqueue_time&.strftime(LAST_ENQUEUE_TIME_FORMAT)
673
+ end
674
+
675
+ def convert_to_global_id_hash(argument)
676
+ { GLOBALID_KEY => argument.to_global_id.to_s }
677
+ rescue URI::GID::MissingModelIdError
678
+ raise "Unable to serialize #{argument.class} " \
679
+ "without an id. (Maybe you forgot to call save?)"
680
+ end
681
+
682
+ def deserialize_argument(argument)
683
+ case argument
684
+ when String
685
+ argument
686
+ when Array
687
+ argument.map { |arg| deserialize_argument(arg) }
688
+ when Hash
689
+ if serialized_global_id?(argument)
690
+ deserialize_global_id argument
691
+ else
692
+ argument.transform_values { |v| deserialize_argument(v) }
693
+ end
694
+ else
695
+ argument
696
+ end
697
+ end
698
+
699
+ def serialized_global_id?(hash)
700
+ hash.size == 1 && hash.include?(GLOBALID_KEY)
701
+ end
702
+
703
+ def deserialize_global_id(hash)
704
+ GlobalID::Locator.locate hash[GLOBALID_KEY]
705
+ end
706
+
707
+ def serialize_argument(argument)
708
+ case argument
709
+ when GlobalID::Identification
710
+ convert_to_global_id_hash(argument)
711
+ when Array
712
+ argument.map { |arg| serialize_argument(arg) }
713
+ when Hash
714
+ argument.each_with_object({}) do |(key, value), hash|
715
+ hash[key] = serialize_argument(value)
716
+ end
717
+ else
718
+ argument
719
+ end
720
+ end
656
721
  end
657
722
  end
658
723
  end
@@ -14,7 +14,7 @@ module Sidekiq
14
14
  attr_reader :cron_poller
15
15
 
16
16
  # Add cron poller and execute normal initialize of Sidekiq launcher.
17
- def initialize(config)
17
+ def initialize(config, **kwargs)
18
18
  config[:cron_poll_interval] = DEFAULT_POLL_INTERVAL if config[:cron_poll_interval].nil?
19
19
 
20
20
  @cron_poller = Sidekiq::Cron::Poller.new(config) if config[:cron_poll_interval] > 0
@@ -10,9 +10,9 @@ if Sidekiq.server?
10
10
  config.on(:startup) do
11
11
  schedule = Sidekiq::Cron::Support.load_yaml(ERB.new(IO.read(schedule_file)).result)
12
12
  if schedule.kind_of?(Hash)
13
- Sidekiq::Cron::Job.load_from_hash schedule
13
+ Sidekiq::Cron::Job.load_from_hash! schedule
14
14
  elsif schedule.kind_of?(Array)
15
- Sidekiq::Cron::Job.load_from_array schedule
15
+ Sidekiq::Cron::Job.load_from_array! schedule
16
16
  else
17
17
  raise "Not supported schedule format. Confirm your #{schedule_file}"
18
18
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Sidekiq
4
4
  module Cron
5
- VERSION = "1.9.1"
5
+ VERSION = "1.10.0"
6
6
  end
7
7
  end
data/sidekiq-cron.gemspec CHANGED
@@ -24,10 +24,11 @@ Gem::Specification.new do |s|
24
24
  "sidekiq-cron.gemspec",
25
25
  ]
26
26
 
27
- s.required_ruby_version = ">= 2.6"
27
+ s.required_ruby_version = ">= 2.7"
28
28
 
29
29
  s.add_dependency("fugit", "~> 1.8")
30
- s.add_dependency("sidekiq", ">= 4.2.1")
30
+ s.add_dependency("sidekiq", ">= 6")
31
+ s.add_dependency("globalid", ">= 1.0.1")
31
32
 
32
33
  s.add_development_dependency("minitest", "~> 5.15")
33
34
  s.add_development_dependency("mocha", "~> 1.14")
@@ -35,4 +36,5 @@ Gem::Specification.new do |s|
35
36
  s.add_development_dependency("rack-test", "~> 1.1")
36
37
  s.add_development_dependency("rake", "~> 13.0")
37
38
  s.add_development_dependency("simplecov", "~> 0.21")
39
+ s.add_development_dependency("simplecov-cobertura", "~> 2.1")
38
40
  end
@@ -0,0 +1,21 @@
1
+ class Person
2
+ include GlobalID::Identification
3
+
4
+ attr_reader :id
5
+
6
+ def self.find(id)
7
+ new(id)
8
+ end
9
+
10
+ def initialize(id)
11
+ @id = id
12
+ end
13
+
14
+ def to_global_id(options = {})
15
+ super app: "app"
16
+ end
17
+
18
+ def ==(other_person)
19
+ other_person.is_a?(Person) && id.to_s == other_person.id.to_s
20
+ end
21
+ end
data/test/test_helper.rb CHANGED
@@ -2,6 +2,12 @@ $TESTING = true
2
2
  ENV['RACK_ENV'] = 'test'
3
3
 
4
4
  require 'simplecov'
5
+
6
+ if ENV['CI']
7
+ require 'simplecov-cobertura'
8
+ SimpleCov.formatter = SimpleCov::Formatter::CoberturaFormatter
9
+ end
10
+
5
11
  SimpleCov.start do
6
12
  add_filter "test/"
7
13
  add_group 'Sidekiq-Cron', 'lib/'
@@ -1,4 +1,5 @@
1
1
  require './test/test_helper'
2
+ require "./test/models/person"
2
3
 
3
4
  describe "Cron Job" do
4
5
  before do
@@ -338,6 +339,45 @@ describe "Cron Job" do
338
339
  assert args[-1].between?(Time.now.to_f - 1, Time.now.to_f)
339
340
  end
340
341
  end
342
+
343
+ describe 'with GlobalID::Identification args' do
344
+ before do
345
+ @args.merge!(args: Person.new(1))
346
+ @job = Sidekiq::Cron::Job.new(@args)
347
+ end
348
+
349
+ let(:args) { @job.sidekiq_worker_message['args'] }
350
+
351
+ it 'should add timestamp to args' do
352
+ assert_equal args[0], Person.new(1)
353
+ end
354
+ end
355
+
356
+ describe 'with GlobalID::Identification args in Array' do
357
+ before do
358
+ @args.merge!(args: [Person.new(1)])
359
+ @job = Sidekiq::Cron::Job.new(@args)
360
+ end
361
+
362
+ let(:args) { @job.sidekiq_worker_message['args'] }
363
+
364
+ it 'should add timestamp to args' do
365
+ assert_equal args[0], Person.new(1)
366
+ end
367
+ end
368
+
369
+ describe 'with GlobalID::Identification args in Hash' do
370
+ before do
371
+ @args.merge!(args: {person: Person.new(1)})
372
+ @job = Sidekiq::Cron::Job.new(@args)
373
+ end
374
+
375
+ let(:args) { @job.sidekiq_worker_message['args'] }
376
+
377
+ it 'should add timestamp to args' do
378
+ assert_equal args[0], {person: Person.new(1)}
379
+ end
380
+ end
341
381
  end
342
382
 
343
383
  describe '#sidekiq_worker_message settings overwrite queue name' do
@@ -777,6 +817,58 @@ describe "Cron Job" do
777
817
  end
778
818
  end
779
819
 
820
+ # @note sidekiq-cron 1.6.0 cannot process options correctly if any date_as_argument evaluates to true.
821
+ # This has been tested to resolve issues in environments where multiple sidekiq-cron versions are running when updating from 1.6.0
822
+ # See https://github.com/sidekiq-cron/sidekiq-cron/issues/350#issuecomment-1409798837 for more information.
823
+ describe "compat with sidekiq cron 1.6.0" do
824
+ describe "#to_hash with date_as_argument false" do
825
+ before do
826
+ @args = {
827
+ name: "Test",
828
+ cron: "* * * * *",
829
+ klass: "CronTestClass",
830
+ date_as_argument: false,
831
+ }
832
+ @job = Sidekiq::Cron::Job.new(@args)
833
+ end
834
+
835
+ it "should not have date_as_argument property" do
836
+ assert !@job.to_hash.key?(:date_as_argument)
837
+ end
838
+ end
839
+
840
+ describe "#to_hash with no date_as_argument option" do
841
+ before do
842
+ @args = {
843
+ name: "Test",
844
+ cron: "* * * * *",
845
+ klass: "CronTestClass",
846
+ }
847
+ @job = Sidekiq::Cron::Job.new(@args)
848
+ end
849
+
850
+ it "should not have date_as_argument property" do
851
+ assert !@job.to_hash.key?(:date_as_argument)
852
+ end
853
+ end
854
+
855
+ describe "#to_hash with date_as_argument" do
856
+ before do
857
+ @args = {
858
+ name: "Test",
859
+ cron: "* * * * *",
860
+ klass: "CronTestClass",
861
+ date_as_argument: true,
862
+ }
863
+ @job = Sidekiq::Cron::Job.new(@args)
864
+ end
865
+
866
+ it "should have date_as_argument property with value '1'" do
867
+ assert_equal @job.to_hash[:date_as_argument], '1'
868
+ end
869
+ end
870
+ end
871
+
780
872
  describe "save" do
781
873
  before do
782
874
  @args = {
@@ -918,6 +1010,42 @@ describe "Cron Job" do
918
1010
  assert_equal job.name, "Test"
919
1011
  end
920
1012
  end
1013
+
1014
+ it "from GlobalID::Identification" do
1015
+ args = {
1016
+ name: "Test",
1017
+ cron: "* * * * *",
1018
+ klass: "CronTestClass",
1019
+ args: Person.new(1)
1020
+ }
1021
+ Sidekiq::Cron::Job.new(args).tap do |job|
1022
+ assert_equal job.args, [{"_sc_globalid"=>"gid://app/Person/1"}]
1023
+ end
1024
+ end
1025
+
1026
+ it "from GlobalID::Identification in Array" do
1027
+ args = {
1028
+ name: "Test",
1029
+ cron: "* * * * *",
1030
+ klass: "CronTestClass",
1031
+ args: [Person.new(1)]
1032
+ }
1033
+ Sidekiq::Cron::Job.new(args).tap do |job|
1034
+ assert_equal job.args, [{"_sc_globalid"=>"gid://app/Person/1"}]
1035
+ end
1036
+ end
1037
+
1038
+ it "from GlobalID::Identification in Hash" do
1039
+ args = {
1040
+ name: "Test",
1041
+ cron: "* * * * *",
1042
+ klass: "CronTestClass",
1043
+ args: {person: Person.new(1)}
1044
+ }
1045
+ Sidekiq::Cron::Job.new(args).tap do |job|
1046
+ assert_equal job.args, [{person: {"_sc_globalid"=>"gid://app/Person/1"}}]
1047
+ end
1048
+ end
921
1049
  end
922
1050
 
923
1051
  describe "create & find methods" do
@@ -1145,11 +1273,11 @@ describe "Cron Job" do
1145
1273
  end
1146
1274
 
1147
1275
  it "duplicate jobs are not loaded" do
1148
- out = Sidekiq::Cron::Job.load_from_hash @jobs_hash
1276
+ out = Sidekiq::Cron::Job.load_from_hash! @jobs_hash
1149
1277
  assert_equal out.size, 0, "should have no errors"
1150
1278
  assert_equal Sidekiq::Cron::Job.all.size, 2, "Should have 2 jobs after load"
1151
1279
 
1152
- out_2 = Sidekiq::Cron::Job.load_from_hash @jobs_hash
1280
+ out_2 = Sidekiq::Cron::Job.load_from_hash! @jobs_hash
1153
1281
  assert_equal out_2.size, 0, "should have no errors"
1154
1282
  assert_equal Sidekiq::Cron::Job.all.size, 2, "Should have 2 jobs after loading again"
1155
1283
  end
@@ -12,7 +12,7 @@ describe 'ScheduleLoader' do
12
12
  end
13
13
 
14
14
  it 'calls Sidekiq::Cron::Job.load_from_hash' do
15
- Sidekiq::Cron::Job.expects(:load_from_hash)
15
+ Sidekiq::Cron::Job.expects(:load_from_hash!)
16
16
  Sidekiq::Options[:lifecycle_events][:startup].first.call
17
17
  end
18
18
  end
@@ -24,7 +24,7 @@ describe 'ScheduleLoader' do
24
24
  end
25
25
 
26
26
  it 'calls Sidekiq::Cron::Job.load_from_array' do
27
- Sidekiq::Cron::Job.expects(:load_from_array)
27
+ Sidekiq::Cron::Job.expects(:load_from_array!)
28
28
  Sidekiq::Options[:lifecycle_events][:startup].first.call
29
29
  end
30
30
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sidekiq-cron
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.9.1
4
+ version: 1.10.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ondrej Bartas
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-12-21 00:00:00.000000000 Z
11
+ date: 2023-03-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fugit
@@ -30,14 +30,28 @@ dependencies:
30
30
  requirements:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: 4.2.1
33
+ version: '6'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: 4.2.1
40
+ version: '6'
41
+ - !ruby/object:Gem::Dependency
42
+ name: globalid
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: 1.0.1
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: 1.0.1
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: minitest
43
57
  requirement: !ruby/object:Gem::Requirement
@@ -122,6 +136,20 @@ dependencies:
122
136
  - - "~>"
123
137
  - !ruby/object:Gem::Version
124
138
  version: '0.21'
139
+ - !ruby/object:Gem::Dependency
140
+ name: simplecov-cobertura
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - "~>"
144
+ - !ruby/object:Gem::Version
145
+ version: '2.1'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - "~>"
151
+ - !ruby/object:Gem::Version
152
+ version: '2.1'
125
153
  description: Enables to set jobs to be run in specified time (using CRON notation
126
154
  or natural language)
127
155
  email: ondrej@bartas.cz
@@ -158,6 +186,7 @@ files:
158
186
  - lib/sidekiq/options.rb
159
187
  - sidekiq-cron.gemspec
160
188
  - test/integration/performance_test.rb
189
+ - test/models/person.rb
161
190
  - test/test_helper.rb
162
191
  - test/unit/fixtures/schedule_array.yml
163
192
  - test/unit/fixtures/schedule_erb.yml
@@ -180,14 +209,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
180
209
  requirements:
181
210
  - - ">="
182
211
  - !ruby/object:Gem::Version
183
- version: '2.6'
212
+ version: '2.7'
184
213
  required_rubygems_version: !ruby/object:Gem::Requirement
185
214
  requirements:
186
215
  - - ">="
187
216
  - !ruby/object:Gem::Version
188
217
  version: '0'
189
218
  requirements: []
190
- rubygems_version: 3.2.33
219
+ rubygems_version: 3.4.6
191
220
  signing_key:
192
221
  specification_version: 4
193
222
  summary: Scheduler/Cron for Sidekiq jobs