sidekiq-delay_extensions 6.4.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 +7 -0
- data/Changes.md +13 -0
- data/Gemfile +28 -0
- data/LICENSE +9 -0
- data/README.md +54 -0
- data/lib/sidekiq/delay_extensions/action_mailer.rb +48 -0
- data/lib/sidekiq/delay_extensions/active_record.rb +43 -0
- data/lib/sidekiq/delay_extensions/api.rb +36 -0
- data/lib/sidekiq/delay_extensions/class_methods.rb +43 -0
- data/lib/sidekiq/delay_extensions/generic_proxy.rb +33 -0
- data/lib/sidekiq/delay_extensions/testing.rb +8 -0
- data/lib/sidekiq/delay_extensions/version.rb +7 -0
- data/lib/sidekiq/delay_extensions.rb +46 -0
- data/sidekiq-delay_extensions.gemspec +32 -0
- metadata +77 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 716a9aa8fc7cb10a70fa3677b0f23c782cf07bb31fe9ad5423da4c1b065a8477
|
4
|
+
data.tar.gz: a2652e237b7de3ca5a8a4cbb72655f805fb535b4e52b8aacf8d3c0b9a479515c
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: e9a1f926727cb57afc4221a2b23ea5c025f0ab566e9c2b000b46a51258376cede7bddb3795128456e2792a92a1352cc6a3e7c9b6793a4e8ff91dd1cf9993e7ae
|
7
|
+
data.tar.gz: 800db7a111af06c8854f348ce117d535bb4b88f9e54f2435f80bbcbf3db5a48b10f67ec1ba7655030d4b8dbc7fbbc2c13aa53e7bbc53eda0e84c597380401adc
|
data/Changes.md
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
# Sidekiq Delay Extensions Changes
|
2
|
+
|
3
|
+
[Sidekiq Changes](https://github.com/gemhome/sidekiq-delay_extensions/blob/main/Changes.md)
|
4
|
+
|
5
|
+
6.4.1
|
6
|
+
---------
|
7
|
+
|
8
|
+
- Extracted from https://github.com/mperham/sidekiq/tree/v6.4.1
|
9
|
+
|
10
|
+
6.4.0
|
11
|
+
---------
|
12
|
+
|
13
|
+
- Extracted from https://github.com/mperham/sidekiq/tree/v6.4.0
|
data/Gemfile
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
source "https://rubygems.org"
|
2
|
+
|
3
|
+
gemspec
|
4
|
+
|
5
|
+
gem "sidekiq", ">= 6.4.0"
|
6
|
+
gem "rake"
|
7
|
+
gem "redis-namespace"
|
8
|
+
gem "rails", ">= 6.0.2"
|
9
|
+
gem "sqlite3", platforms: :ruby
|
10
|
+
gem "activerecord-jdbcsqlite3-adapter", platforms: :jruby
|
11
|
+
|
12
|
+
# mail dependencies
|
13
|
+
gem "net-smtp", platforms: :mri, require: false
|
14
|
+
|
15
|
+
group :test do
|
16
|
+
gem "minitest"
|
17
|
+
gem "simplecov"
|
18
|
+
gem "codecov", require: false
|
19
|
+
end
|
20
|
+
|
21
|
+
group :development, :test do
|
22
|
+
gem "standard", require: false
|
23
|
+
end
|
24
|
+
|
25
|
+
group :load_test do
|
26
|
+
gem "hiredis"
|
27
|
+
gem "toxiproxy"
|
28
|
+
end
|
data/LICENSE
ADDED
@@ -0,0 +1,9 @@
|
|
1
|
+
Copyright (c) Contributed Systems LLC
|
2
|
+
|
3
|
+
Sidekiq is an Open Source project licensed under the terms of
|
4
|
+
the LGPLv3 license. Please see <http://www.gnu.org/licenses/lgpl-3.0.html>
|
5
|
+
for license text.
|
6
|
+
|
7
|
+
Sidekiq Pro and Sidekiq Enterprise have a commercial-friendly license.
|
8
|
+
You can find the commercial license in COMM-LICENSE.txt.
|
9
|
+
Please see https://sidekiq.org for purchasing options.
|
data/README.md
ADDED
@@ -0,0 +1,54 @@
|
|
1
|
+
Sidekiq Delay Extensions
|
2
|
+
==============
|
3
|
+
|
4
|
+
[](https://rubygems.org/gems/sidekiq-delay_extensions)
|
5
|
+

|
6
|
+
|
7
|
+
The [Sidekiq delay extensions are deprecated in 6.x and will be removed from 7.x](https://github.com/mperham/sidekiq/issues/5076).
|
8
|
+
|
9
|
+
This gem extracts the delay extensions from the latest 6.x release and will match
|
10
|
+
Sidekiq 6.x version numbers.
|
11
|
+
|
12
|
+
When Sidekiq reaches 7.0, this gem will begin being maintained on its own. Maintainers wanted.
|
13
|
+
|
14
|
+
Requirements
|
15
|
+
-----------------
|
16
|
+
|
17
|
+
- See https://github.com/mperham/sidekiq/tree/v6.4.0
|
18
|
+
- Redis: 4.0+
|
19
|
+
- Ruby: MRI 2.5+ or JRuby 9.2+.
|
20
|
+
- Sidekiq 6.0 supports Rails 5.0+ but does not require it.
|
21
|
+
|
22
|
+
Installation
|
23
|
+
-----------------
|
24
|
+
|
25
|
+
gem install sidekiq
|
26
|
+
gem install sidekiq-delay_extensions
|
27
|
+
|
28
|
+
In your initializers, include the line:
|
29
|
+
|
30
|
+
Sidekiq::DelayExtensions.enable_delay!
|
31
|
+
|
32
|
+
Testing
|
33
|
+
-----------------
|
34
|
+
|
35
|
+
In your test environment, include the line:
|
36
|
+
|
37
|
+
require "sidekiq/delay_extensions/testing"
|
38
|
+
|
39
|
+
Contributing
|
40
|
+
-----------------
|
41
|
+
|
42
|
+
Please see [the contributing guidelines](https://github.com/gemhome/sidekiq-delay_extensions/blob/main/.github/contributing.md).
|
43
|
+
|
44
|
+
|
45
|
+
License
|
46
|
+
-----------------
|
47
|
+
|
48
|
+
Please see [LICENSE](https://github.com/gemhome/sidekiq-delay_extensions/blob/main/LICENSE) for licensing details.
|
49
|
+
|
50
|
+
|
51
|
+
Original Author
|
52
|
+
-----------------
|
53
|
+
|
54
|
+
Mike Perham, [@getajobmike](https://twitter.com/getajobmike) / [@sidekiq](https://twitter.com/sidekiq), [https://www.mikeperham.com](https://www.mikeperham.com) / [https://www.contribsys.com](https://www.contribsys.com)
|
@@ -0,0 +1,48 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "sidekiq/delay_extensions/generic_proxy"
|
4
|
+
|
5
|
+
module Sidekiq
|
6
|
+
module DelayExtensions
|
7
|
+
##
|
8
|
+
# Adds +delay+, +delay_for+ and +delay_until+ methods to ActionMailer to offload arbitrary email
|
9
|
+
# delivery to Sidekiq.
|
10
|
+
#
|
11
|
+
# @example
|
12
|
+
# UserMailer.delay.send_welcome_email(new_user)
|
13
|
+
# UserMailer.delay_for(5.days).send_welcome_email(new_user)
|
14
|
+
# UserMailer.delay_until(5.days.from_now).send_welcome_email(new_user)
|
15
|
+
class DelayedMailer
|
16
|
+
include Sidekiq::Worker
|
17
|
+
|
18
|
+
def perform(yml)
|
19
|
+
(target, method_name, args, kwargs) = YAML.load(yml)
|
20
|
+
msg = kwargs.empty? ? target.public_send(method_name, *args) : target.public_send(method_name, *args, **kwargs)
|
21
|
+
# The email method can return nil, which causes ActionMailer to return
|
22
|
+
# an undeliverable empty message.
|
23
|
+
if msg
|
24
|
+
msg.deliver_now
|
25
|
+
else
|
26
|
+
raise "#{target.name}##{method_name} returned an undeliverable mail object"
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
module ActionMailer
|
32
|
+
def sidekiq_delay(options = {})
|
33
|
+
Proxy.new(DelayedMailer, self, options)
|
34
|
+
end
|
35
|
+
|
36
|
+
def sidekiq_delay_for(interval, options = {})
|
37
|
+
Proxy.new(DelayedMailer, self, options.merge("at" => Time.now.to_f + interval.to_f))
|
38
|
+
end
|
39
|
+
|
40
|
+
def sidekiq_delay_until(timestamp, options = {})
|
41
|
+
Proxy.new(DelayedMailer, self, options.merge("at" => timestamp.to_f))
|
42
|
+
end
|
43
|
+
alias_method :delay, :sidekiq_delay
|
44
|
+
alias_method :delay_for, :sidekiq_delay_for
|
45
|
+
alias_method :delay_until, :sidekiq_delay_until
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "sidekiq/delay_extensions/generic_proxy"
|
4
|
+
|
5
|
+
module Sidekiq
|
6
|
+
module DelayExtensions
|
7
|
+
##
|
8
|
+
# Adds +delay+, +delay_for+ and +delay_until+ methods to ActiveRecord to offload instance method
|
9
|
+
# execution to Sidekiq.
|
10
|
+
#
|
11
|
+
# @example
|
12
|
+
# User.recent_signups.each { |user| user.delay.mark_as_awesome }
|
13
|
+
#
|
14
|
+
# Please note, this is not recommended as this will serialize the entire
|
15
|
+
# object to Redis. Your Sidekiq jobs should pass IDs, not entire instances.
|
16
|
+
# This is here for backwards compatibility with Delayed::Job only.
|
17
|
+
class DelayedModel
|
18
|
+
include Sidekiq::Worker
|
19
|
+
|
20
|
+
def perform(yml)
|
21
|
+
(target, method_name, args, kwargs) = YAML.load(yml)
|
22
|
+
kwargs.empty? ? target.__send__(method_name, *args) : target.__send__(method_name, *args, **kwargs)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
module ActiveRecord
|
27
|
+
def sidekiq_delay(options = {})
|
28
|
+
Proxy.new(DelayedModel, self, options)
|
29
|
+
end
|
30
|
+
|
31
|
+
def sidekiq_delay_for(interval, options = {})
|
32
|
+
Proxy.new(DelayedModel, self, options.merge("at" => Time.now.to_f + interval.to_f))
|
33
|
+
end
|
34
|
+
|
35
|
+
def sidekiq_delay_until(timestamp, options = {})
|
36
|
+
Proxy.new(DelayedModel, self, options.merge("at" => timestamp.to_f))
|
37
|
+
end
|
38
|
+
alias_method :delay, :sidekiq_delay
|
39
|
+
alias_method :delay_for, :sidekiq_delay_for
|
40
|
+
alias_method :delay_until, :sidekiq_delay_until
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "sidekiq/api"
|
4
|
+
|
5
|
+
module Sidekiq
|
6
|
+
module DelayExtensions
|
7
|
+
module JobRecord
|
8
|
+
def display_class
|
9
|
+
# Unwrap known wrappers so they show up in a human-friendly manner in the Web UI
|
10
|
+
@klass ||= self["display_class"] || begin
|
11
|
+
case klass
|
12
|
+
when /\ASidekiq::DelayExtensions::Delayed/
|
13
|
+
safe_load(args[0], klass) do |target, method, _|
|
14
|
+
"#{target}.#{method}"
|
15
|
+
end
|
16
|
+
else
|
17
|
+
super
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def display_args
|
23
|
+
# Unwrap known wrappers so they show up in a human-friendly manner in the Web UI
|
24
|
+
@display_args ||= case klass
|
25
|
+
when /\ASidekiq::DelayExtensions::Delayed/
|
26
|
+
safe_load(args[0], args) do |_, _, arg|
|
27
|
+
arg
|
28
|
+
end
|
29
|
+
|
30
|
+
else
|
31
|
+
super
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "sidekiq/delay_extensions/generic_proxy"
|
4
|
+
|
5
|
+
module Sidekiq
|
6
|
+
module DelayExtensions
|
7
|
+
##
|
8
|
+
# Adds `delay`, `delay_for` and `delay_until` methods to all Classes to offload class method
|
9
|
+
# execution to Sidekiq.
|
10
|
+
#
|
11
|
+
# @example
|
12
|
+
# User.delay.delete_inactive
|
13
|
+
# Wikipedia.delay.download_changes_for(Date.today)
|
14
|
+
#
|
15
|
+
class DelayedClass
|
16
|
+
include Sidekiq::Worker
|
17
|
+
|
18
|
+
def perform(yml)
|
19
|
+
(target, method_name, args, kwargs) = YAML.load(yml)
|
20
|
+
kwargs.empty? ? target.__send__(method_name, *args) : target.__send__(method_name, *args, **kwargs)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
module Klass
|
25
|
+
def sidekiq_delay(options = {})
|
26
|
+
Proxy.new(DelayedClass, self, options)
|
27
|
+
end
|
28
|
+
|
29
|
+
def sidekiq_delay_for(interval, options = {})
|
30
|
+
Proxy.new(DelayedClass, self, options.merge("at" => Time.now.to_f + interval.to_f))
|
31
|
+
end
|
32
|
+
|
33
|
+
def sidekiq_delay_until(timestamp, options = {})
|
34
|
+
Proxy.new(DelayedClass, self, options.merge("at" => timestamp.to_f))
|
35
|
+
end
|
36
|
+
alias_method :delay, :sidekiq_delay
|
37
|
+
alias_method :delay_for, :sidekiq_delay_for
|
38
|
+
alias_method :delay_until, :sidekiq_delay_until
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
Module.__send__(:include, Sidekiq::DelayExtensions::Klass) unless defined?(::Rails)
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "yaml"
|
4
|
+
|
5
|
+
module Sidekiq
|
6
|
+
module DelayExtensions
|
7
|
+
SIZE_LIMIT = 8_192
|
8
|
+
|
9
|
+
class Proxy < BasicObject
|
10
|
+
def initialize(performable, target, options = {})
|
11
|
+
@performable = performable
|
12
|
+
@target = target
|
13
|
+
@opts = options
|
14
|
+
end
|
15
|
+
|
16
|
+
def method_missing(name, *args, **kwargs)
|
17
|
+
# Sidekiq has a limitation in that its message must be JSON.
|
18
|
+
# JSON can't round trip real Ruby objects so we use YAML to
|
19
|
+
# serialize the objects to a String. The YAML will be converted
|
20
|
+
# to JSON and then deserialized on the other side back into a
|
21
|
+
# Ruby object.
|
22
|
+
obj = [@target, name, args, kwargs]
|
23
|
+
marshalled = ::YAML.dump(obj)
|
24
|
+
if marshalled.size > SIZE_LIMIT
|
25
|
+
::Sidekiq.logger.warn { "#{@target}.#{name} job argument is #{marshalled.bytesize} bytes, you should refactor it to reduce the size" }
|
26
|
+
end
|
27
|
+
@performable.client_push({"class" => @performable,
|
28
|
+
"args" => [marshalled],
|
29
|
+
"display_class" => "#{@target}.#{name}"}.merge(@opts))
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,8 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "sidekiq/testing"
|
4
|
+
|
5
|
+
module Sidekiq
|
6
|
+
Sidekiq::DelayExtensions::DelayedMailer.extend(TestingExtensions) if defined?(Sidekiq::DelayExtensions::DelayedMailer)
|
7
|
+
Sidekiq::DelayExtensions::DelayedModel.extend(TestingExtensions) if defined?(Sidekiq::DelayExtensions::DelayedModel)
|
8
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "sidekiq"
|
4
|
+
|
5
|
+
module Sidekiq
|
6
|
+
module DelayExtensions
|
7
|
+
def self.enable_delay!
|
8
|
+
if defined?(::ActiveSupport)
|
9
|
+
require "sidekiq/delay_extensions/active_record"
|
10
|
+
require "sidekiq/delay_extensions/action_mailer"
|
11
|
+
|
12
|
+
# Need to patch Psych so it can autoload classes whose names are serialized
|
13
|
+
# in the delayed YAML.
|
14
|
+
Psych::Visitors::ToRuby.prepend(Sidekiq::DelayExtensions::PsychAutoload)
|
15
|
+
|
16
|
+
ActiveSupport.on_load(:active_record) do
|
17
|
+
include Sidekiq::DelayExtensions::ActiveRecord
|
18
|
+
end
|
19
|
+
ActiveSupport.on_load(:action_mailer) do
|
20
|
+
extend Sidekiq::DelayExtensions::ActionMailer
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
require "sidekiq/delay_extensions/class_methods"
|
25
|
+
Module.__send__(:include, Sidekiq::DelayExtensions::Klass)
|
26
|
+
|
27
|
+
require "sidekiq/delay_extensions/api"
|
28
|
+
Sidekiq::JobRecord.prepend(Sidekiq::DelayExtensions::JobRecord)
|
29
|
+
end
|
30
|
+
|
31
|
+
module PsychAutoload
|
32
|
+
def resolve_class(klass_name)
|
33
|
+
return nil if !klass_name || klass_name.empty?
|
34
|
+
# constantize
|
35
|
+
names = klass_name.split("::")
|
36
|
+
names.shift if names.empty? || names.first.empty?
|
37
|
+
|
38
|
+
names.inject(Object) do |constant, name|
|
39
|
+
constant.const_defined?(name) ? constant.const_get(name) : constant.const_missing(name)
|
40
|
+
end
|
41
|
+
rescue NameError
|
42
|
+
super
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative "lib/sidekiq/delay_extensions/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |spec|
|
6
|
+
spec.name = "sidekiq-delay_extensions"
|
7
|
+
spec.version = Sidekiq::DelayExtensions::VERSION
|
8
|
+
spec.authors = ["Mike Perham", "Benjamin Fleischer"]
|
9
|
+
spec.email = ["mperham@gmail.com", "github@benjaminfleischer.com"]
|
10
|
+
|
11
|
+
spec.summary = "Sidekiq Delay Extensions"
|
12
|
+
spec.description = "Extracted from Sidekiq 6.0"
|
13
|
+
spec.homepage = "https://github.com/gemhome/sidekiq-delay_extensions/wiki/Delayed-extensions"
|
14
|
+
spec.license = "LGPL-3.0"
|
15
|
+
|
16
|
+
spec.files = Dir.glob("{bin,lib,config}/**/*") + %w[Gemfile sidekiq-delay_extensions.gemspec README.md Changes.md LICENSE]
|
17
|
+
|
18
|
+
spec.bindir = "exe"
|
19
|
+
spec.executables = []
|
20
|
+
spec.require_paths = ["lib"]
|
21
|
+
spec.required_ruby_version = ">= 2.5.0"
|
22
|
+
|
23
|
+
spec.metadata = {
|
24
|
+
"homepage_uri" => "https://github.com/gemhome/sidekiq-delay_extensions/wiki/Delayed-extensions",
|
25
|
+
"bug_tracker_uri" => "https://github.com/gemhome/sidekiq-delay_extensions/issues",
|
26
|
+
"documentation_uri" => "https://github.com/gemhome/sidekiq-delay_extensions/wiki",
|
27
|
+
"changelog_uri" => "https://github.com/gemhome/sidekiq-delay_extensions/blob/main/Changes.md",
|
28
|
+
"source_code_uri" => "https://github.com/gemhome/sidekiq-delay_extensions"
|
29
|
+
}
|
30
|
+
|
31
|
+
spec.add_dependency "sidekiq", ">= 6.4.0"
|
32
|
+
end
|
metadata
ADDED
@@ -0,0 +1,77 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: sidekiq-delay_extensions
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 6.4.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Mike Perham
|
8
|
+
- Benjamin Fleischer
|
9
|
+
autorequire:
|
10
|
+
bindir: exe
|
11
|
+
cert_chain: []
|
12
|
+
date: 2022-02-08 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: sidekiq
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
requirements:
|
18
|
+
- - ">="
|
19
|
+
- !ruby/object:Gem::Version
|
20
|
+
version: 6.4.0
|
21
|
+
type: :runtime
|
22
|
+
prerelease: false
|
23
|
+
version_requirements: !ruby/object:Gem::Requirement
|
24
|
+
requirements:
|
25
|
+
- - ">="
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
version: 6.4.0
|
28
|
+
description: Extracted from Sidekiq 6.0
|
29
|
+
email:
|
30
|
+
- mperham@gmail.com
|
31
|
+
- github@benjaminfleischer.com
|
32
|
+
executables: []
|
33
|
+
extensions: []
|
34
|
+
extra_rdoc_files: []
|
35
|
+
files:
|
36
|
+
- Changes.md
|
37
|
+
- Gemfile
|
38
|
+
- LICENSE
|
39
|
+
- README.md
|
40
|
+
- lib/sidekiq/delay_extensions.rb
|
41
|
+
- lib/sidekiq/delay_extensions/action_mailer.rb
|
42
|
+
- lib/sidekiq/delay_extensions/active_record.rb
|
43
|
+
- lib/sidekiq/delay_extensions/api.rb
|
44
|
+
- lib/sidekiq/delay_extensions/class_methods.rb
|
45
|
+
- lib/sidekiq/delay_extensions/generic_proxy.rb
|
46
|
+
- lib/sidekiq/delay_extensions/testing.rb
|
47
|
+
- lib/sidekiq/delay_extensions/version.rb
|
48
|
+
- sidekiq-delay_extensions.gemspec
|
49
|
+
homepage: https://github.com/gemhome/sidekiq-delay_extensions/wiki/Delayed-extensions
|
50
|
+
licenses:
|
51
|
+
- LGPL-3.0
|
52
|
+
metadata:
|
53
|
+
homepage_uri: https://github.com/gemhome/sidekiq-delay_extensions/wiki/Delayed-extensions
|
54
|
+
bug_tracker_uri: https://github.com/gemhome/sidekiq-delay_extensions/issues
|
55
|
+
documentation_uri: https://github.com/gemhome/sidekiq-delay_extensions/wiki
|
56
|
+
changelog_uri: https://github.com/gemhome/sidekiq-delay_extensions/blob/main/Changes.md
|
57
|
+
source_code_uri: https://github.com/gemhome/sidekiq-delay_extensions
|
58
|
+
post_install_message:
|
59
|
+
rdoc_options: []
|
60
|
+
require_paths:
|
61
|
+
- lib
|
62
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
63
|
+
requirements:
|
64
|
+
- - ">="
|
65
|
+
- !ruby/object:Gem::Version
|
66
|
+
version: 2.5.0
|
67
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
68
|
+
requirements:
|
69
|
+
- - ">="
|
70
|
+
- !ruby/object:Gem::Version
|
71
|
+
version: '0'
|
72
|
+
requirements: []
|
73
|
+
rubygems_version: 3.1.4
|
74
|
+
signing_key:
|
75
|
+
specification_version: 4
|
76
|
+
summary: Sidekiq Delay Extensions
|
77
|
+
test_files: []
|