sidekiq-delay_extensions 6.4.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
+
[![Gem Version](https://badge.fury.io/rb/sidekiq-delay_extensions.svg)](https://rubygems.org/gems/sidekiq-delay_extensions)
|
5
|
+
![Build](https://github.com/gehome/sidekiq-delay_extensions/workflows/CI/badge.svg)
|
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: []
|