Skip to content

Commit c6bbb55

Browse files
committed
Enhance Sidekiq integration and update dependencies
- Added support for Sidekiq 8 API in the web extension registration. - Updated development dependencies in the gemspec file. - Introduced new Gemfiles for Sidekiq versions 7 and 8. - Configured bundler settings in .bundle/config. - Added Ruby version specification in .ruby-version. - Updated CI workflow to test against Sidekiq 7 and 8. - Modified .gitignore to exclude additional lock files.
1 parent 85ea268 commit c6bbb55

File tree

12 files changed

+86
-15
lines changed

12 files changed

+86
-15
lines changed

.bundle/config

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
---
2+
BUNDLE_PATH: "vendor/bundle"

.github/workflows/ci.yml

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,17 +6,14 @@ jobs:
66
fail-fast: false
77
matrix:
88
ruby:
9+
- "3.4"
910
- "3.3"
1011
- "3.2"
1112
- "3.1"
1213
- "3.0"
1314
gemfile:
14-
- "Gemfile.jwt.2.4"
15-
- "Gemfile.jwt.2.5"
16-
- "Gemfile.jwt.2.6"
17-
- "Gemfile.jwt.2.7"
18-
- "Gemfile.jwt.2.8"
19-
- "Gemfile.jwt.2.9"
15+
- "Gemfile.sidekiq.7"
16+
- "Gemfile.sidekiq.8"
2017
env:
2118
BUNDLE_GEMFILE: ${{ matrix.gemfile }}
2219
RUBY_VERSION: $${ matrix.ruby }}

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,4 @@
11
*.gem
22
*.gemspec.lock
3+
Gemfile.*.lock
4+
vendor/bundle/*

.ruby-version

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
3.4.4

Gemfile.sidekiq.7

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
source 'http://rubygems.org'
2+
3+
gemspec
4+
5+
gem 'sidekiq', '~> 7.0'

Gemfile.sidekiq.8

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
source 'http://rubygems.org'
2+
3+
gemspec
4+
5+
gem 'sidekiq', '~> 8.0'

lib/sidekiq_adhoc_job.rb

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,17 @@ def self.config
3131
def self.init
3232
SidekiqAdhocJob::WorkerClassesLoader.load(@_config.module_names, load_paths: @_config.load_paths, strategy: @_config.strategy)
3333

34-
Sidekiq::Web.register(SidekiqAdhocJob::Web)
35-
Sidekiq::Web.tabs['adhoc_jobs'] = 'adhoc-jobs'
34+
# Check if we're using Sidekiq 8+ which requires the new API
35+
if Sidekiq::VERSION >= '8.0'
36+
Sidekiq::Web.configure do |config|
37+
config.register_extension(SidekiqAdhocJob::Web, name: 'Adhoc Jobs', tab: 'adhoc_jobs', index: 'adhoc-jobs')
38+
end
39+
else
40+
# Legacy API for Sidekiq 7.x
41+
Sidekiq::Web.register(SidekiqAdhocJob::Web)
42+
Sidekiq::Web.tabs['adhoc_jobs'] = 'adhoc-jobs'
43+
end
44+
3645
Sidekiq::Web.locales << File.expand_path('sidekiq_adhoc_job/web/locales', __dir__)
3746

3847
assets_path = File.expand_path('sidekiq_adhoc_job/web/assets', __dir__)

lib/sidekiq_adhoc_job/web/routes/jobs/schedule.rb

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,27 @@ module Web
33
module Jobs
44
class Schedule
55

6-
def self.register(app)
6+
def self.register(app)
77
app.post '/adhoc-jobs/:name/schedule' do
8-
SidekiqAdhocJob::ScheduleAdhocJob.new(params[:name], request.params).call
8+
# Use Sidekiq 8's new API if available, fallback to legacy for Sidekiq 7
9+
name = if respond_to?(:route_params)
10+
route_params(:name)
11+
else
12+
params[:name]
13+
end
14+
15+
# For form parameters, try the new API first, then fallback to request.params
16+
form_params = if respond_to?(:url_params)
17+
begin
18+
url_params
19+
rescue ArgumentError
20+
request.params
21+
end
22+
else
23+
request.params
24+
end
25+
26+
SidekiqAdhocJob::ScheduleAdhocJob.new(name, form_params).call
927
redirect "#{root_path}adhoc-jobs"
1028
end
1129
end

lib/sidekiq_adhoc_job/web/routes/jobs/show.rb

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,15 @@ class Show
66
def self.register(app)
77
app.get '/adhoc-jobs/:name' do
88
@csrf_token = env['rack.session'][:csrf]
9-
@presented_job = SidekiqAdhocJob::Web::JobPresenter.find(params[:name])
9+
10+
# Use Sidekiq 8's new API if available, fallback to legacy for Sidekiq 7
11+
name = if respond_to?(:route_params)
12+
route_params(:name)
13+
else
14+
params[:name]
15+
end
16+
17+
@presented_job = SidekiqAdhocJob::Web::JobPresenter.find(name)
1018
if @presented_job
1119
erb File.read(File.join(VIEW_PATH, 'jobs/show.html.erb'))
1220
else

sidekiq_adhoc_job.gemspec

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,11 @@ Gem::Specification.new do |spec|
2929
spec.add_development_dependency 'bundler'
3030
spec.add_development_dependency 'rake', '~> 12.3.2'
3131
spec.add_development_dependency 'rspec', '~> 3.10.0'
32-
spec.add_development_dependency 'rack-test', '~> 1.1.0'
32+
spec.add_development_dependency 'rack-test', '~> 2.1'
3333
spec.add_development_dependency 'mock_redis', '~> 0.26.0'
3434
spec.add_development_dependency 'rspec_junit_formatter'
35+
spec.add_development_dependency 'base64'
36+
spec.add_development_dependency 'ostruct'
3537

3638
spec.add_runtime_dependency 'sidekiq', '< 9'
3739
end

0 commit comments

Comments
 (0)