publishing_platform_sidekiq 0.2.0 → 0.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 +4 -4
- data/lib/publishing_platform_sidekiq/api_headers.rb +54 -0
- data/lib/publishing_platform_sidekiq/railtie.rb +8 -5
- data/lib/publishing_platform_sidekiq/sidekiq_initializer.rb +11 -7
- data/lib/publishing_platform_sidekiq/testing.rb +6 -0
- data/lib/publishing_platform_sidekiq/version.rb +1 -1
- metadata +62 -24
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 136a31161907be3c379bd2eb113953524904733a0483349a4f20cd7cbed85e01
|
4
|
+
data.tar.gz: 05335effa99619570ad4566fddc96cfb2d991104cd6bda2ba6ad96d86283b241
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 97dc0696f8fb84b740f8f4ac861e324d1a9dc685c722378b207e53e7bf82a54cbb35a5a74251d59cd5fb7d3ed9595db60c2c5f050088d5a6566d878016c34dc7
|
7
|
+
data.tar.gz: e7238f347a080e864e2eca13f1de876ecc123aad92cf3ca92aaaa601fb1c921380c2207864350a8ff5a0c4666f80bde65273cf45df7755fb70cb0b43ffb5aab9
|
@@ -0,0 +1,54 @@
|
|
1
|
+
require "publishing_platform_api/publishing_platform_headers"
|
2
|
+
require "sidekiq"
|
3
|
+
|
4
|
+
module PublishingPlatformSidekiq
|
5
|
+
module APIHeaders
|
6
|
+
# Client-side middleware runs before the pushing of the job to Redis and
|
7
|
+
# allows you to modify/stop the job before it gets pushed.
|
8
|
+
#
|
9
|
+
# https://github.com/mperham/sidekiq/wiki/Middleware#client-side-middleware
|
10
|
+
class ClientMiddleware
|
11
|
+
def call(_worker_class, job, _queue, _redis_pool)
|
12
|
+
last_arg = job["args"].last
|
13
|
+
if is_header_hash(last_arg)
|
14
|
+
job["args"].pop
|
15
|
+
job["args"] << header_arguments.merge(last_arg)
|
16
|
+
else
|
17
|
+
job["args"] << header_arguments
|
18
|
+
end
|
19
|
+
yield
|
20
|
+
end
|
21
|
+
|
22
|
+
def header_arguments
|
23
|
+
{
|
24
|
+
"authenticated_user" => PublishingPlatformApi::PublishingPlatformHeaders.headers[:x_publishing_platform_authenticated_user],
|
25
|
+
"request_id" => PublishingPlatformApi::PublishingPlatformHeaders.headers[:publishing_platform_request_id],
|
26
|
+
}
|
27
|
+
end
|
28
|
+
|
29
|
+
def is_header_hash(arg)
|
30
|
+
arg.is_a?(Hash) && (arg.symbolize_keys.keys.include?(:authenticated_user) || arg.symbolize_keys.keys.include?(:request_id))
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
# Server-side middleware runs 'around' job processing.
|
35
|
+
#
|
36
|
+
# https://github.com/mperham/sidekiq/wiki/Middleware#server-side-middleware
|
37
|
+
class ServerMiddleware
|
38
|
+
def call(_worker, message, _queue)
|
39
|
+
last_arg = message["args"].last
|
40
|
+
|
41
|
+
if last_arg.is_a?(Hash) && last_arg.keys.include?("request_id")
|
42
|
+
message["args"].pop
|
43
|
+
request_id = last_arg["request_id"]
|
44
|
+
authenticated_user = last_arg["authenticated_user"]
|
45
|
+
PublishingPlatformApi::PublishingPlatformHeaders.set_header(:publishing_platform_request_id, request_id)
|
46
|
+
PublishingPlatformApi::PublishingPlatformHeaders.set_header(:x_publishing_platform_authenticated_user, authenticated_user)
|
47
|
+
Sidekiq::Context.add("publishing_platform_request_id", request_id)
|
48
|
+
end
|
49
|
+
|
50
|
+
yield
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
@@ -2,11 +2,14 @@ require "publishing_platform_sidekiq/sidekiq_initializer"
|
|
2
2
|
|
3
3
|
module PublishingPlatformSidekiq
|
4
4
|
class Railtie < Rails::Railtie
|
5
|
-
initializer "publishing_platform_sidekiq.initialize_sidekiq" do
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
5
|
+
initializer "publishing_platform_sidekiq.initialize_sidekiq" do
|
6
|
+
redis_options = { url: ENV.fetch("REDIS_URL", "redis://127.0.0.1:6379") }
|
7
|
+
|
8
|
+
if ENV["REDIS_SSL_VERIFY_NONE"] == "true"
|
9
|
+
redis_options[:ssl_params] = { verify_mode: OpenSSL::SSL::VERIFY_NONE }
|
10
|
+
end
|
11
|
+
|
12
|
+
SidekiqInitializer.setup_sidekiq(redis_options)
|
10
13
|
end
|
11
14
|
end
|
12
15
|
end
|
@@ -1,22 +1,26 @@
|
|
1
1
|
require "sidekiq"
|
2
|
+
require "publishing_platform_sidekiq/api_headers"
|
2
3
|
|
3
4
|
module PublishingPlatformSidekiq
|
4
5
|
module SidekiqInitializer
|
5
|
-
def self.setup_sidekiq(
|
6
|
-
redis_config = redis_config.merge(
|
7
|
-
namespace: publishing_platform_app_name,
|
8
|
-
reconnect_attempts: 4,
|
9
|
-
reconnect_delay: 15,
|
10
|
-
reconnect_delay_max: 60,
|
11
|
-
)
|
6
|
+
def self.setup_sidekiq(redis_config = {})
|
7
|
+
redis_config = redis_config.merge(reconnect_attempts: [15, 30, 45, 60])
|
12
8
|
|
13
9
|
Sidekiq.configure_server do |config|
|
14
10
|
config.logger = Sidekiq::Logger.new($stdout)
|
15
11
|
config.redis = redis_config
|
12
|
+
|
13
|
+
config.server_middleware do |chain|
|
14
|
+
chain.add PublishingPlatformSidekiq::APIHeaders::ServerMiddleware
|
15
|
+
end
|
16
16
|
end
|
17
17
|
|
18
18
|
Sidekiq.configure_client do |config|
|
19
19
|
config.redis = redis_config
|
20
|
+
|
21
|
+
config.client_middleware do |chain|
|
22
|
+
chain.add PublishingPlatformSidekiq::APIHeaders::ClientMiddleware
|
23
|
+
end
|
20
24
|
end
|
21
25
|
end
|
22
26
|
end
|
metadata
CHANGED
@@ -1,63 +1,76 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: publishing_platform_sidekiq
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Publishing Platform
|
8
|
-
autorequire:
|
9
8
|
bindir: bin
|
10
9
|
cert_chain: []
|
11
|
-
date:
|
10
|
+
date: 2025-02-28 00:00:00.000000000 Z
|
12
11
|
dependencies:
|
13
12
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
13
|
+
name: publishing_platform_api_adapters
|
15
14
|
requirement: !ruby/object:Gem::Requirement
|
16
15
|
requirements:
|
17
|
-
- - "
|
16
|
+
- - ">="
|
18
17
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
18
|
+
version: '0'
|
20
19
|
type: :runtime
|
21
20
|
prerelease: false
|
22
21
|
version_requirements: !ruby/object:Gem::Requirement
|
23
22
|
requirements:
|
24
|
-
- - "
|
23
|
+
- - ">="
|
25
24
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
25
|
+
version: '0'
|
27
26
|
- !ruby/object:Gem::Dependency
|
28
|
-
name: redis-
|
27
|
+
name: redis-client
|
29
28
|
requirement: !ruby/object:Gem::Requirement
|
30
29
|
requirements:
|
31
|
-
- - "
|
30
|
+
- - ">="
|
32
31
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
32
|
+
version: 0.22.2
|
34
33
|
type: :runtime
|
35
34
|
prerelease: false
|
36
35
|
version_requirements: !ruby/object:Gem::Requirement
|
37
36
|
requirements:
|
38
|
-
- - "
|
37
|
+
- - ">="
|
39
38
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
39
|
+
version: 0.22.2
|
41
40
|
- !ruby/object:Gem::Dependency
|
42
41
|
name: sidekiq
|
43
42
|
requirement: !ruby/object:Gem::Requirement
|
44
43
|
requirements:
|
45
44
|
- - "~>"
|
46
45
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
48
|
-
- - "
|
46
|
+
version: '7.0'
|
47
|
+
- - "<"
|
49
48
|
- !ruby/object:Gem::Version
|
50
|
-
version:
|
49
|
+
version: '8'
|
51
50
|
type: :runtime
|
52
51
|
prerelease: false
|
53
52
|
version_requirements: !ruby/object:Gem::Requirement
|
54
53
|
requirements:
|
55
54
|
- - "~>"
|
56
55
|
- !ruby/object:Gem::Version
|
57
|
-
version: '
|
56
|
+
version: '7.0'
|
57
|
+
- - "<"
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
version: '8'
|
60
|
+
- !ruby/object:Gem::Dependency
|
61
|
+
name: climate_control
|
62
|
+
requirement: !ruby/object:Gem::Requirement
|
63
|
+
requirements:
|
64
|
+
- - ">="
|
65
|
+
- !ruby/object:Gem::Version
|
66
|
+
version: '0'
|
67
|
+
type: :development
|
68
|
+
prerelease: false
|
69
|
+
version_requirements: !ruby/object:Gem::Requirement
|
70
|
+
requirements:
|
58
71
|
- - ">="
|
59
72
|
- !ruby/object:Gem::Version
|
60
|
-
version:
|
73
|
+
version: '0'
|
61
74
|
- !ruby/object:Gem::Dependency
|
62
75
|
name: publishing_platform_rubocop
|
63
76
|
requirement: !ruby/object:Gem::Requirement
|
@@ -72,8 +85,34 @@ dependencies:
|
|
72
85
|
- - ">="
|
73
86
|
- !ruby/object:Gem::Version
|
74
87
|
version: '0'
|
75
|
-
|
76
|
-
|
88
|
+
- !ruby/object:Gem::Dependency
|
89
|
+
name: railties
|
90
|
+
requirement: !ruby/object:Gem::Requirement
|
91
|
+
requirements:
|
92
|
+
- - "~>"
|
93
|
+
- !ruby/object:Gem::Version
|
94
|
+
version: '7'
|
95
|
+
type: :development
|
96
|
+
prerelease: false
|
97
|
+
version_requirements: !ruby/object:Gem::Requirement
|
98
|
+
requirements:
|
99
|
+
- - "~>"
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: '7'
|
102
|
+
- !ruby/object:Gem::Dependency
|
103
|
+
name: simplecov
|
104
|
+
requirement: !ruby/object:Gem::Requirement
|
105
|
+
requirements:
|
106
|
+
- - ">="
|
107
|
+
- !ruby/object:Gem::Version
|
108
|
+
version: '0'
|
109
|
+
type: :development
|
110
|
+
prerelease: false
|
111
|
+
version_requirements: !ruby/object:Gem::Requirement
|
112
|
+
requirements:
|
113
|
+
- - ">="
|
114
|
+
- !ruby/object:Gem::Version
|
115
|
+
version: '0'
|
77
116
|
executables: []
|
78
117
|
extensions: []
|
79
118
|
extra_rdoc_files: []
|
@@ -81,14 +120,14 @@ files:
|
|
81
120
|
- LICENSE
|
82
121
|
- README.md
|
83
122
|
- lib/publishing_platform_sidekiq.rb
|
123
|
+
- lib/publishing_platform_sidekiq/api_headers.rb
|
84
124
|
- lib/publishing_platform_sidekiq/railtie.rb
|
85
125
|
- lib/publishing_platform_sidekiq/sidekiq_initializer.rb
|
126
|
+
- lib/publishing_platform_sidekiq/testing.rb
|
86
127
|
- lib/publishing_platform_sidekiq/version.rb
|
87
|
-
homepage:
|
88
128
|
licenses:
|
89
129
|
- MIT
|
90
130
|
metadata: {}
|
91
|
-
post_install_message:
|
92
131
|
rdoc_options: []
|
93
132
|
require_paths:
|
94
133
|
- lib
|
@@ -103,8 +142,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
103
142
|
- !ruby/object:Gem::Version
|
104
143
|
version: '0'
|
105
144
|
requirements: []
|
106
|
-
rubygems_version: 3.
|
107
|
-
signing_key:
|
145
|
+
rubygems_version: 3.6.5
|
108
146
|
specification_version: 4
|
109
147
|
summary: Provides standard setup and behaviour for Sidekiq in Publishing Platform
|
110
148
|
applications.
|