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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4a959eb18ffd887bb982fa36be08a917123a0a0a2494c699d202906a8b9ae9e0
4
- data.tar.gz: 9f4b4ea0d98e7e74c6c5ac28b7a12c11eb310d2c78bece5a1f7e5e4c7a20c0ca
3
+ metadata.gz: 136a31161907be3c379bd2eb113953524904733a0483349a4f20cd7cbed85e01
4
+ data.tar.gz: 05335effa99619570ad4566fddc96cfb2d991104cd6bda2ba6ad96d86283b241
5
5
  SHA512:
6
- metadata.gz: 9c2ca9260720f6e4f446f56bbd828dc0f504631ced5be62a8100036e7b4d2c146455e8c5fd978d5cff20b12a775f92b775a2c161714f7b899e5035e4b6d61c96
7
- data.tar.gz: a121c393d3db6ffbd4c18098d754d0d298f226b5705d4aed7eb050008df49a210755ce9ce766702d0b11b9970cd35d25f385029d97e87c24139371fbb86d9712
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 |app|
6
- SidekiqInitializer.setup_sidekiq(
7
- ENV.fetch("PUBLISHING_PLATFORM_APP_NAME", app.root.basename.to_s),
8
- { url: ENV.fetch("REDIS_URL", "redis://127.0.0.1:6379") },
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(publishing_platform_app_name, redis_config = {})
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
@@ -0,0 +1,6 @@
1
+ require "sidekiq/testing"
2
+ require "publishing_platform_sidekiq/api_headers"
3
+
4
+ Sidekiq::Testing.server_middleware do |chain|
5
+ chain.add PublishingPlatformSidekiq::APIHeaders::ServerMiddleware
6
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module PublishingPlatformSidekiq
4
- VERSION = "0.2.0"
4
+ VERSION = "0.4.0"
5
5
  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.2.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: 2024-06-27 00:00:00.000000000 Z
10
+ date: 2025-02-28 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
- name: redis
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: '5'
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: '5'
25
+ version: '0'
27
26
  - !ruby/object:Gem::Dependency
28
- name: redis-namespace
27
+ name: redis-client
29
28
  requirement: !ruby/object:Gem::Requirement
30
29
  requirements:
31
- - - "~>"
30
+ - - ">="
32
31
  - !ruby/object:Gem::Version
33
- version: '1.6'
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: '1.6'
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: '6.5'
48
- - - ">="
46
+ version: '7.0'
47
+ - - "<"
49
48
  - !ruby/object:Gem::Version
50
- version: 6.5.12
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: '6.5'
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: 6.5.12
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
- description:
76
- email:
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.3.7
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.