sidekiq 5.2.7 → 8.0.5
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 +4 -4
- data/Changes.md +845 -8
- data/LICENSE.txt +9 -0
- data/README.md +54 -54
- data/bin/multi_queue_bench +271 -0
- data/bin/sidekiq +22 -3
- data/bin/sidekiqload +219 -112
- data/bin/sidekiqmon +11 -0
- data/bin/webload +69 -0
- data/lib/active_job/queue_adapters/sidekiq_adapter.rb +120 -0
- data/lib/generators/sidekiq/job_generator.rb +59 -0
- data/lib/generators/sidekiq/templates/{worker.rb.erb → job.rb.erb} +2 -2
- data/lib/generators/sidekiq/templates/{worker_spec.rb.erb → job_spec.rb.erb} +1 -1
- data/lib/generators/sidekiq/templates/{worker_test.rb.erb → job_test.rb.erb} +1 -1
- data/lib/sidekiq/api.rb +757 -373
- data/lib/sidekiq/capsule.rb +132 -0
- data/lib/sidekiq/cli.rb +210 -233
- data/lib/sidekiq/client.rb +145 -103
- data/lib/sidekiq/component.rb +128 -0
- data/lib/sidekiq/config.rb +315 -0
- data/lib/sidekiq/deploy.rb +64 -0
- data/lib/sidekiq/embedded.rb +64 -0
- data/lib/sidekiq/fetch.rb +49 -42
- data/lib/sidekiq/iterable_job.rb +56 -0
- data/lib/sidekiq/job/interrupt_handler.rb +24 -0
- data/lib/sidekiq/job/iterable/active_record_enumerator.rb +53 -0
- data/lib/sidekiq/job/iterable/csv_enumerator.rb +47 -0
- data/lib/sidekiq/job/iterable/enumerators.rb +135 -0
- data/lib/sidekiq/job/iterable.rb +306 -0
- data/lib/sidekiq/job.rb +385 -0
- data/lib/sidekiq/job_logger.rb +34 -7
- data/lib/sidekiq/job_retry.rb +164 -109
- data/lib/sidekiq/job_util.rb +113 -0
- data/lib/sidekiq/launcher.rb +208 -107
- data/lib/sidekiq/logger.rb +80 -0
- data/lib/sidekiq/manager.rb +42 -46
- data/lib/sidekiq/metrics/query.rb +184 -0
- data/lib/sidekiq/metrics/shared.rb +109 -0
- data/lib/sidekiq/metrics/tracking.rb +150 -0
- data/lib/sidekiq/middleware/chain.rb +113 -56
- data/lib/sidekiq/middleware/current_attributes.rb +119 -0
- data/lib/sidekiq/middleware/i18n.rb +7 -7
- data/lib/sidekiq/middleware/modules.rb +23 -0
- data/lib/sidekiq/monitor.rb +147 -0
- data/lib/sidekiq/paginator.rb +41 -16
- data/lib/sidekiq/processor.rb +146 -127
- data/lib/sidekiq/profiler.rb +72 -0
- data/lib/sidekiq/rails.rb +46 -43
- data/lib/sidekiq/redis_client_adapter.rb +113 -0
- data/lib/sidekiq/redis_connection.rb +79 -108
- data/lib/sidekiq/ring_buffer.rb +31 -0
- data/lib/sidekiq/scheduled.rb +112 -50
- data/lib/sidekiq/sd_notify.rb +149 -0
- data/lib/sidekiq/systemd.rb +26 -0
- data/lib/sidekiq/testing/inline.rb +6 -5
- data/lib/sidekiq/testing.rb +91 -90
- data/lib/sidekiq/transaction_aware_client.rb +51 -0
- data/lib/sidekiq/version.rb +7 -1
- data/lib/sidekiq/web/action.rb +125 -60
- data/lib/sidekiq/web/application.rb +363 -259
- data/lib/sidekiq/web/config.rb +120 -0
- data/lib/sidekiq/web/csrf_protection.rb +183 -0
- data/lib/sidekiq/web/helpers.rb +241 -120
- data/lib/sidekiq/web/router.rb +62 -71
- data/lib/sidekiq/web.rb +69 -161
- data/lib/sidekiq/worker_compatibility_alias.rb +13 -0
- data/lib/sidekiq.rb +94 -182
- data/sidekiq.gemspec +26 -16
- data/web/assets/images/apple-touch-icon.png +0 -0
- data/web/assets/javascripts/application.js +150 -61
- data/web/assets/javascripts/base-charts.js +120 -0
- data/web/assets/javascripts/chart.min.js +13 -0
- data/web/assets/javascripts/chartjs-adapter-date-fns.min.js +7 -0
- data/web/assets/javascripts/chartjs-plugin-annotation.min.js +7 -0
- data/web/assets/javascripts/dashboard-charts.js +194 -0
- data/web/assets/javascripts/dashboard.js +41 -293
- data/web/assets/javascripts/metrics.js +280 -0
- data/web/assets/stylesheets/style.css +766 -0
- data/web/locales/ar.yml +72 -65
- data/web/locales/cs.yml +63 -62
- data/web/locales/da.yml +61 -53
- data/web/locales/de.yml +66 -53
- data/web/locales/el.yml +44 -24
- data/web/locales/en.yml +94 -66
- data/web/locales/es.yml +92 -54
- data/web/locales/fa.yml +66 -65
- data/web/locales/fr.yml +83 -62
- data/web/locales/gd.yml +99 -0
- data/web/locales/he.yml +66 -64
- data/web/locales/hi.yml +60 -59
- data/web/locales/it.yml +93 -54
- data/web/locales/ja.yml +75 -64
- data/web/locales/ko.yml +53 -52
- data/web/locales/lt.yml +84 -0
- data/web/locales/nb.yml +62 -61
- data/web/locales/nl.yml +53 -52
- data/web/locales/pl.yml +46 -45
- data/web/locales/{pt-br.yml → pt-BR.yml} +84 -56
- data/web/locales/pt.yml +52 -51
- data/web/locales/ru.yml +69 -63
- data/web/locales/sv.yml +54 -53
- data/web/locales/ta.yml +61 -60
- data/web/locales/tr.yml +101 -0
- data/web/locales/uk.yml +86 -61
- data/web/locales/ur.yml +65 -64
- data/web/locales/vi.yml +84 -0
- data/web/locales/zh-CN.yml +106 -0
- data/web/locales/{zh-tw.yml → zh-TW.yml} +43 -9
- data/web/views/_footer.erb +31 -19
- data/web/views/_job_info.erb +94 -75
- data/web/views/_metrics_period_select.erb +15 -0
- data/web/views/_nav.erb +14 -21
- data/web/views/_paging.erb +23 -19
- data/web/views/_poll_link.erb +3 -6
- data/web/views/_summary.erb +23 -23
- data/web/views/busy.erb +139 -87
- data/web/views/dashboard.erb +82 -53
- data/web/views/dead.erb +31 -27
- data/web/views/filtering.erb +6 -0
- data/web/views/layout.erb +15 -29
- data/web/views/metrics.erb +84 -0
- data/web/views/metrics_for_job.erb +58 -0
- data/web/views/morgue.erb +60 -70
- data/web/views/profiles.erb +43 -0
- data/web/views/queue.erb +50 -39
- data/web/views/queues.erb +45 -29
- data/web/views/retries.erb +65 -75
- data/web/views/retry.erb +32 -27
- data/web/views/scheduled.erb +58 -52
- data/web/views/scheduled_job_info.erb +1 -1
- metadata +96 -76
- data/.circleci/config.yml +0 -61
- data/.github/contributing.md +0 -32
- data/.github/issue_template.md +0 -11
- data/.gitignore +0 -15
- data/.travis.yml +0 -11
- data/3.0-Upgrade.md +0 -70
- data/4.0-Upgrade.md +0 -53
- data/5.0-Upgrade.md +0 -56
- data/COMM-LICENSE +0 -97
- data/Ent-Changes.md +0 -238
- data/Gemfile +0 -23
- data/LICENSE +0 -9
- data/Pro-2.0-Upgrade.md +0 -138
- data/Pro-3.0-Upgrade.md +0 -44
- data/Pro-4.0-Upgrade.md +0 -35
- data/Pro-Changes.md +0 -759
- data/Rakefile +0 -9
- data/bin/sidekiqctl +0 -20
- data/code_of_conduct.md +0 -50
- data/lib/generators/sidekiq/worker_generator.rb +0 -49
- data/lib/sidekiq/core_ext.rb +0 -1
- data/lib/sidekiq/ctl.rb +0 -221
- data/lib/sidekiq/delay.rb +0 -42
- data/lib/sidekiq/exception_handler.rb +0 -29
- data/lib/sidekiq/extensions/action_mailer.rb +0 -57
- data/lib/sidekiq/extensions/active_record.rb +0 -40
- data/lib/sidekiq/extensions/class_methods.rb +0 -40
- data/lib/sidekiq/extensions/generic_proxy.rb +0 -31
- data/lib/sidekiq/logging.rb +0 -122
- data/lib/sidekiq/middleware/server/active_record.rb +0 -23
- data/lib/sidekiq/util.rb +0 -66
- data/lib/sidekiq/worker.rb +0 -220
- data/web/assets/stylesheets/application-rtl.css +0 -246
- data/web/assets/stylesheets/application.css +0 -1144
- data/web/assets/stylesheets/bootstrap-rtl.min.css +0 -9
- data/web/assets/stylesheets/bootstrap.css +0 -5
- data/web/locales/zh-cn.yml +0 -68
- data/web/views/_status.erb +0 -4
data/lib/sidekiq/web/router.rb
CHANGED
@@ -1,98 +1,89 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
require 'rack'
|
3
2
|
|
4
|
-
|
5
|
-
module WebRouter
|
6
|
-
GET = 'GET'
|
7
|
-
DELETE = 'DELETE'
|
8
|
-
POST = 'POST'
|
9
|
-
PUT = 'PUT'
|
10
|
-
PATCH = 'PATCH'
|
11
|
-
HEAD = 'HEAD'
|
12
|
-
|
13
|
-
ROUTE_PARAMS = 'rack.route_params'
|
14
|
-
REQUEST_METHOD = 'REQUEST_METHOD'
|
15
|
-
PATH_INFO = 'PATH_INFO'
|
16
|
-
|
17
|
-
def get(path, &block)
|
18
|
-
route(GET, path, &block)
|
19
|
-
end
|
3
|
+
require "rack"
|
20
4
|
|
21
|
-
|
22
|
-
|
23
|
-
|
5
|
+
module Sidekiq
|
6
|
+
class Web
|
7
|
+
# Provides an API to declare endpoints, along with a match
|
8
|
+
# API to dynamically route a request to an endpoint.
|
9
|
+
module Router
|
10
|
+
def head(path, &) = route(:head, path, &)
|
24
11
|
|
25
|
-
|
26
|
-
route(PUT, path, &block)
|
27
|
-
end
|
12
|
+
def get(path, &) = route(:get, path, &)
|
28
13
|
|
29
|
-
|
30
|
-
route(PATCH, path, &block)
|
31
|
-
end
|
14
|
+
def post(path, &) = route(:post, path, &)
|
32
15
|
|
33
|
-
|
34
|
-
route(DELETE, path, &block)
|
35
|
-
end
|
16
|
+
def put(path, &) = route(:put, path, &)
|
36
17
|
|
37
|
-
|
38
|
-
@routes ||= { GET => [], POST => [], PUT => [], PATCH => [], DELETE => [], HEAD => [] }
|
18
|
+
def patch(path, &) = route(:patch, path, &)
|
39
19
|
|
40
|
-
|
41
|
-
@routes[HEAD] << WebRoute.new(method, path, block) if method == GET
|
42
|
-
end
|
20
|
+
def delete(path, &) = route(:delete, path, &)
|
43
21
|
|
44
|
-
|
45
|
-
|
46
|
-
|
22
|
+
def route(*methods, path, &block)
|
23
|
+
methods.each do |method|
|
24
|
+
raise ArgumentError, "Invalid method #{method}. Must be one of #{@routes.keys.join(",")}" unless route_cache.has_key?(method)
|
25
|
+
route_cache[method] << Route.new(method, path, block)
|
26
|
+
end
|
27
|
+
end
|
47
28
|
|
48
|
-
|
49
|
-
|
50
|
-
|
29
|
+
def match(env)
|
30
|
+
request_method = env["REQUEST_METHOD"].downcase.to_sym
|
31
|
+
path_info = ::Rack::Utils.unescape_path env["PATH_INFO"]
|
51
32
|
|
52
|
-
|
53
|
-
|
54
|
-
|
33
|
+
# There are servers which send an empty string when requesting the root.
|
34
|
+
# These servers should be ashamed of themselves.
|
35
|
+
path_info = "/" if path_info == ""
|
55
36
|
|
56
|
-
|
37
|
+
route_cache[request_method].each do |route|
|
38
|
+
params = route.match(request_method, path_info)
|
39
|
+
if params
|
40
|
+
env["rack.route_params"] = params
|
41
|
+
return Action.new(env, route.block)
|
42
|
+
end
|
57
43
|
end
|
44
|
+
|
45
|
+
nil
|
58
46
|
end
|
59
47
|
|
60
|
-
|
48
|
+
def route_cache
|
49
|
+
@@routes ||= {get: [], post: [], put: [], patch: [], delete: [], head: []}
|
50
|
+
end
|
61
51
|
end
|
62
|
-
end
|
63
52
|
|
64
|
-
|
65
|
-
|
53
|
+
class Route
|
54
|
+
attr_accessor :request_method, :pattern, :block, :name
|
66
55
|
|
67
|
-
|
56
|
+
NAMED_SEGMENTS_PATTERN = /\/([^\/]*):([^.:$\/]+)/
|
68
57
|
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
58
|
+
def initialize(request_method, pattern, block)
|
59
|
+
@request_method = request_method
|
60
|
+
@pattern = pattern
|
61
|
+
@block = block
|
62
|
+
end
|
74
63
|
|
75
|
-
|
76
|
-
|
77
|
-
|
64
|
+
def matcher
|
65
|
+
@matcher ||= compile
|
66
|
+
end
|
78
67
|
|
79
|
-
|
80
|
-
|
81
|
-
|
68
|
+
def compile
|
69
|
+
if pattern.match?(NAMED_SEGMENTS_PATTERN)
|
70
|
+
p = pattern.gsub(NAMED_SEGMENTS_PATTERN, '/\1(?<\2>[^$/]+)')
|
82
71
|
|
83
|
-
|
84
|
-
|
85
|
-
|
72
|
+
Regexp.new("\\A#{p}\\Z")
|
73
|
+
else
|
74
|
+
pattern
|
75
|
+
end
|
86
76
|
end
|
87
|
-
end
|
88
77
|
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
78
|
+
EMPTY = {}.freeze
|
79
|
+
|
80
|
+
def match(request_method, path)
|
81
|
+
case matcher
|
82
|
+
when String
|
83
|
+
EMPTY if path == matcher
|
84
|
+
else
|
85
|
+
path_match = path.match(matcher)
|
86
|
+
path_match&.named_captures&.transform_keys(&:to_sym)
|
96
87
|
end
|
97
88
|
end
|
98
89
|
end
|
data/lib/sidekiq/web.rb
CHANGED
@@ -1,20 +1,12 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
require 'erb'
|
3
2
|
|
4
|
-
require
|
5
|
-
require
|
6
|
-
require
|
7
|
-
require
|
8
|
-
|
9
|
-
require
|
10
|
-
require
|
11
|
-
require 'sidekiq/web/application'
|
12
|
-
|
13
|
-
require 'rack/protection'
|
14
|
-
|
15
|
-
require 'rack/builder'
|
16
|
-
require 'rack/file'
|
17
|
-
require 'rack/session/cookie'
|
3
|
+
require "erb"
|
4
|
+
require "securerandom"
|
5
|
+
require "rack/builder"
|
6
|
+
require "rack/static"
|
7
|
+
require "sidekiq"
|
8
|
+
require "sidekiq/api"
|
9
|
+
require "sidekiq/web/config"
|
18
10
|
|
19
11
|
module Sidekiq
|
20
12
|
class Web
|
@@ -25,189 +17,105 @@ module Sidekiq
|
|
25
17
|
ASSETS = "#{ROOT}/assets"
|
26
18
|
|
27
19
|
DEFAULT_TABS = {
|
28
|
-
"Dashboard" =>
|
29
|
-
"Busy"
|
30
|
-
"Queues"
|
31
|
-
"Retries"
|
32
|
-
"Scheduled" =>
|
33
|
-
"Dead"
|
20
|
+
"Dashboard" => "",
|
21
|
+
"Busy" => "busy",
|
22
|
+
"Queues" => "queues",
|
23
|
+
"Retries" => "retries",
|
24
|
+
"Scheduled" => "scheduled",
|
25
|
+
"Dead" => "morgue",
|
26
|
+
"Metrics" => "metrics",
|
27
|
+
"Profiles" => "profiles"
|
34
28
|
}
|
35
29
|
|
36
|
-
|
37
|
-
def settings
|
38
|
-
self
|
39
|
-
end
|
40
|
-
|
41
|
-
def middlewares
|
42
|
-
@middlewares ||= []
|
43
|
-
end
|
30
|
+
@@config = Sidekiq::Web::Config.new
|
44
31
|
|
45
|
-
|
46
|
-
|
32
|
+
class << self
|
33
|
+
def configure
|
34
|
+
if block_given?
|
35
|
+
yield @@config
|
36
|
+
else
|
37
|
+
@@config
|
38
|
+
end
|
47
39
|
end
|
48
40
|
|
49
|
-
def
|
50
|
-
|
41
|
+
def app_url=(url)
|
42
|
+
@@config.app_url = url
|
51
43
|
end
|
52
44
|
|
53
|
-
def
|
54
|
-
@custom_tabs ||= {}
|
55
|
-
end
|
56
|
-
alias_method :tabs, :custom_tabs
|
45
|
+
def tabs = @@config.tabs
|
57
46
|
|
58
|
-
def locales
|
59
|
-
@locales ||= LOCALES
|
60
|
-
end
|
47
|
+
def locales = @@config.locales
|
61
48
|
|
62
|
-
def views
|
63
|
-
@views ||= VIEWS
|
64
|
-
end
|
49
|
+
def views = @@config.views
|
65
50
|
|
66
|
-
def
|
67
|
-
opts.each {|key| set(key, true) }
|
68
|
-
end
|
51
|
+
def custom_job_info_rows = @@config.custom_job_info_rows
|
69
52
|
|
70
|
-
def
|
71
|
-
|
53
|
+
def redis_pool
|
54
|
+
@pool || Sidekiq.default_configuration.redis_pool
|
72
55
|
end
|
73
56
|
|
74
|
-
|
75
|
-
|
76
|
-
send(:"#{attribute}=", value)
|
57
|
+
def redis_pool=(pool)
|
58
|
+
@pool = pool
|
77
59
|
end
|
78
60
|
|
79
|
-
|
80
|
-
attr_writer :locales, :views
|
81
|
-
end
|
61
|
+
def middlewares = @@config.middlewares
|
82
62
|
|
83
|
-
|
84
|
-
child.app_url = self.app_url
|
85
|
-
child.session_secret = self.session_secret
|
86
|
-
child.redis_pool = self.redis_pool
|
87
|
-
child.sessions = self.sessions
|
88
|
-
end
|
63
|
+
def use(*args, &block) = @@config.middlewares << [args, block]
|
89
64
|
|
90
|
-
|
91
|
-
|
65
|
+
def register(*args, **kw, &block)
|
66
|
+
Sidekiq.logger.warn { "`Sidekiq::Web.register` is deprecated, use `Sidekiq::Web.configure {|cfg| cfg.register(...) }`" }
|
67
|
+
@@config.register(*args, **kw, &block)
|
68
|
+
end
|
92
69
|
end
|
93
70
|
|
94
|
-
|
95
|
-
|
71
|
+
# Allow user to say
|
72
|
+
# run Sidekiq::Web
|
73
|
+
# rather than:
|
74
|
+
# run Sidekiq::Web.new
|
75
|
+
def self.call(env)
|
76
|
+
@inst ||= new
|
77
|
+
@inst.call(env)
|
96
78
|
end
|
97
79
|
|
98
|
-
|
99
|
-
|
80
|
+
# testing, internal use only
|
81
|
+
def self.reset!
|
82
|
+
@@config.reset!
|
83
|
+
@inst = nil
|
100
84
|
end
|
101
85
|
|
102
86
|
def call(env)
|
87
|
+
env[:web_config] = Sidekiq::Web.configure
|
88
|
+
env[:csp_nonce] = SecureRandom.hex(8)
|
89
|
+
env[:redis_pool] = self.class.redis_pool
|
103
90
|
app.call(env)
|
104
91
|
end
|
105
92
|
|
106
|
-
def self.call(env)
|
107
|
-
@app ||= new
|
108
|
-
@app.call(env)
|
109
|
-
end
|
110
|
-
|
111
93
|
def app
|
112
|
-
@app ||= build
|
113
|
-
end
|
114
|
-
|
115
|
-
def enable(*opts)
|
116
|
-
opts.each {|key| set(key, true) }
|
117
|
-
end
|
118
|
-
|
119
|
-
def disable(*opts)
|
120
|
-
opts.each {|key| set(key, false) }
|
121
|
-
end
|
122
|
-
|
123
|
-
def set(attribute, value)
|
124
|
-
send(:"#{attribute}=", value)
|
125
|
-
end
|
126
|
-
|
127
|
-
# Default values
|
128
|
-
set :sessions, true
|
129
|
-
|
130
|
-
attr_writer :sessions
|
131
|
-
|
132
|
-
def sessions
|
133
|
-
unless instance_variable_defined?("@sessions")
|
134
|
-
@sessions = self.class.sessions
|
135
|
-
@sessions = @sessions.to_hash.dup if @sessions.respond_to?(:to_hash)
|
136
|
-
end
|
137
|
-
|
138
|
-
@sessions
|
139
|
-
end
|
140
|
-
|
141
|
-
def self.register(extension)
|
142
|
-
extension.registered(WebApplication)
|
94
|
+
@app ||= build(@@config)
|
143
95
|
end
|
144
96
|
|
145
97
|
private
|
146
98
|
|
147
|
-
def
|
148
|
-
|
149
|
-
|
150
|
-
end
|
151
|
-
end
|
152
|
-
|
153
|
-
def build_sessions
|
154
|
-
middlewares = self.middlewares
|
155
|
-
|
156
|
-
unless using?(::Rack::Protection) || ENV['RACK_ENV'] == 'test'
|
157
|
-
middlewares.unshift [[::Rack::Protection, { use: :authenticity_token }], nil]
|
158
|
-
end
|
159
|
-
|
160
|
-
s = sessions
|
161
|
-
return unless s
|
162
|
-
|
163
|
-
unless using? ::Rack::Session::Cookie
|
164
|
-
unless secret = Web.session_secret
|
165
|
-
require 'securerandom'
|
166
|
-
secret = SecureRandom.hex(64)
|
167
|
-
end
|
99
|
+
def build(cfg)
|
100
|
+
cfg.freeze
|
101
|
+
m = cfg.middlewares
|
168
102
|
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
middlewares.unshift [[::Rack::Session::Cookie, options], nil]
|
173
|
-
end
|
174
|
-
end
|
175
|
-
|
176
|
-
def build
|
177
|
-
build_sessions
|
178
|
-
|
179
|
-
middlewares = self.middlewares
|
180
|
-
klass = self.class
|
103
|
+
rules = []
|
104
|
+
rules = [[:all, {"cache-control" => "private, max-age=86400"}]] unless ENV["SIDEKIQ_WEB_TESTING"]
|
181
105
|
|
182
106
|
::Rack::Builder.new do
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
run WebApplication.new(klass)
|
107
|
+
use Rack::Static, urls: ["/stylesheets", "/images", "/javascripts"],
|
108
|
+
root: ASSETS,
|
109
|
+
cascade: true,
|
110
|
+
header_rules: rules
|
111
|
+
m.each { |middleware, block| use(*middleware, &block) }
|
112
|
+
use CsrfProtection if cfg[:csrf]
|
113
|
+
run Sidekiq::Web::Application.new(self.class)
|
192
114
|
end
|
193
115
|
end
|
194
116
|
end
|
195
|
-
|
196
|
-
Sidekiq::WebApplication.helpers WebHelpers
|
197
|
-
Sidekiq::WebApplication.helpers Sidekiq::Paginator
|
198
|
-
|
199
|
-
Sidekiq::WebAction.class_eval "def _render\n#{ERB.new(File.read(Web::LAYOUT)).src}\nend"
|
200
117
|
end
|
201
118
|
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
# Rack apps can't reuse the Rails session store without
|
206
|
-
# this monkeypatch, fixed in Rails 5.
|
207
|
-
class ActionDispatch::Request::Session
|
208
|
-
def each(&block)
|
209
|
-
hash = self.to_hash
|
210
|
-
hash.each(&block)
|
211
|
-
end
|
212
|
-
end
|
213
|
-
end
|
119
|
+
require "sidekiq/web/router"
|
120
|
+
require "sidekiq/web/action"
|
121
|
+
require "sidekiq/web/application"
|
@@ -0,0 +1,13 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Sidekiq
|
4
|
+
# Sidekiq::Job is a new alias for Sidekiq::Worker as of Sidekiq 6.3.0.
|
5
|
+
# Use `include Sidekiq::Job` rather than `include Sidekiq::Worker`.
|
6
|
+
#
|
7
|
+
# The term "worker" is too generic and overly confusing, used in several
|
8
|
+
# different contexts meaning different things. Many people call a Sidekiq
|
9
|
+
# process a "worker". Some people call the thread that executes jobs a
|
10
|
+
# "worker". This change brings Sidekiq closer to ActiveJob where your job
|
11
|
+
# classes extend ApplicationJob.
|
12
|
+
Worker = Job
|
13
|
+
end
|