Skip to content

Commit ec3d176

Browse files
authored
Merge pull request MindscapeHQ#177 from nikz/sidekiq-testing
Adds testing for latest Sidekiq versions
2 parents 453e79f + b968d9d commit ec3d176

File tree

10 files changed

+43
-31
lines changed

10 files changed

+43
-31
lines changed

Diff for: .github/workflows/tests.yml

+1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ jobs:
1111
gemfile:
1212
- gemfiles/rails_6.gemfile
1313
- gemfiles/rails_7.gemfile
14+
- gemfiles/rails_7_sidekiq_6.gemfile
1415
include:
1516
- ruby: "3.0"
1617
gemfile: gemfiles/rails_6.gemfile

Diff for: Appraisals

+9
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,19 @@
11
appraise "rails-6" do
22
gem "rails", "6.1.4"
33
gem "sqlite3", "~> 1.4"
4+
gem "sidekiq", ">= 7"
45
end
56

67
appraise "rails-7" do
78
gem "rails", "7.1.3"
89
gem "sqlite3", "~> 1.4"
910
gem "importmap-rails"
11+
gem "sidekiq", ">= 7"
12+
end
13+
14+
appraise "rails-7-sidekiq-6" do
15+
gem "rails", "7.1.3"
16+
gem "sqlite3", "~> 1.4"
17+
gem "importmap-rails"
18+
gem "sidekiq", "~> 6.5"
1019
end

Diff for: Rakefile

+7-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1-
#!/usr/bin/env rake
1+
require "bundler/setup"
22
require "bundler/gem_tasks"
33

4+
require "appraisal"
45
require "rake/testtask"
56

67
namespace :test do
@@ -24,4 +25,8 @@ namespace :test do
2425
end
2526
end
2627

27-
task default: ["test:units", "test:spec"]
28+
if !ENV["APPRAISAL_INITIALIZED"] && !ENV["CI"]
29+
task default: :appraisal
30+
else
31+
task default: ["test:units", "test:spec"]
32+
end

Diff for: gemfiles/rails_6.gemfile

+1
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,6 @@ source "https://rubygems.org"
44

55
gem "rails", "6.1.4"
66
gem "sqlite3", "~> 1.4"
7+
gem "sidekiq", ">= 7"
78

89
gemspec path: "../"

Diff for: gemfiles/rails_7.gemfile

+1
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,6 @@ source "https://rubygems.org"
55
gem "rails", "7.1.3"
66
gem "sqlite3", "~> 1.4"
77
gem "importmap-rails"
8+
gem "sidekiq", ">= 7"
89

910
gemspec path: "../"

Diff for: gemfiles/rails_7_sidekiq_6.gemfile

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
# This file was generated by Appraisal
2+
3+
source "https://rubygems.org"
4+
5+
gem "rails", "7.1.3"
6+
gem "sqlite3", "~> 1.4"
7+
gem "importmap-rails"
8+
gem "sidekiq", "~> 6.5"
9+
10+
gemspec path: "../"

Diff for: lib/raygun/sidekiq.rb

+5-25
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,12 @@
1-
# Adapted from Bugsnag code as per Sidekiq 2.x comment request
1+
# Adapted from Bugsnag code, and Sidekiq Erorr Handling instructions
22
#
3-
# SideKiq 2.x: https://github.com/mperham/sidekiq/blob/2-x/lib/sidekiq/exception_handler.rb
3+
# SideKiq: https://github.com/sidekiq/sidekiq/wiki/Error-Handling
44
# Bugsnag: https://github.com/bugsnag/bugsnag-ruby/blob/master/lib/bugsnag/sidekiq.rb
55

66
module Raygun
77

8-
class SidekiqMiddleware # Used for Sidekiq 2.x only
9-
def call(worker, message, queue)
10-
begin
11-
yield
12-
rescue Exception => ex
13-
raise ex if [Interrupt, SystemExit, SignalException].include?(ex.class)
14-
SidekiqReporter.call(ex, worker: worker, message: message, queue: queue)
15-
raise ex
16-
end
17-
end
18-
end
19-
208
class SidekiqReporter
21-
def self.call(exception, context_hash)
9+
def self.call(exception, context_hash, config)
2210
user = affected_user(context_hash)
2311
data = {
2412
custom_data: {
@@ -58,14 +46,6 @@ def self.affected_user(context_hash)
5846
end
5947
end
6048

61-
if Sidekiq::VERSION < '3'
62-
Sidekiq.configure_server do |config|
63-
config.server_middleware do |chain|
64-
chain.add Raygun::SidekiqMiddleware
65-
end
66-
end
67-
else
68-
Sidekiq.configure_server do |config|
69-
config.error_handlers << Raygun::SidekiqReporter
70-
end
49+
Sidekiq.configure_server do |config|
50+
config.error_handlers << Raygun::SidekiqReporter
7151
end

Diff for: raygun4ruby.gemspec

-1
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@ Gem::Specification.new do |spec|
3232
spec.add_development_dependency "minitest", "~> 5.11"
3333
spec.add_development_dependency "redis-namespace", ">= 1.3.1"
3434
spec.add_development_dependency "resque"
35-
spec.add_development_dependency "sidekiq", [">= 3", "< 3.2.2"]
3635
spec.add_development_dependency "mocha"
3736
spec.add_development_dependency "pry"
3837
spec.add_development_dependency "webmock"

Diff for: spec/rails_helper.rb

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
ENV['RAILS_ENV'] ||= 'test'
22
require "rails"
33

4-
require "rails_applications/#{Rails::VERSION::STRING}/config/environment"
4+
major_minor_patch = Rails::VERSION::STRING.split(".").first(3).join(".")
5+
6+
require "rails_applications/#{major_minor_patch}/config/environment"
57

68
require "rspec/rails"

Diff for: test/unit/sidekiq_failure_test.rb

+6-2
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,16 @@ def setup
2424
def test_failure_backend_appears_to_work
2525
assert Raygun::SidekiqReporter.call(
2626
StandardError.new("Oh no! Your Sidekiq has failed!"),
27-
sidekick_name: "robin"
27+
{ sidekick_name: "robin" },
28+
{} # config
2829
).success?
2930
end
3031

3132
def test_we_are_in_sidekiqs_list_of_error_handlers
32-
assert Sidekiq.error_handlers.include?(Raygun::SidekiqReporter)
33+
# Sidekiq 7.x stores error handlers inside a configuration object, while 6.x and below stores them directly against the Sidekiq module
34+
error_handlers = Sidekiq.respond_to?(:error_handlers) ? Sidekiq.error_handlers : Sidekiq.default_configuration.error_handlers
35+
36+
assert error_handlers.include?(Raygun::SidekiqReporter)
3337
end
3438

3539
end

0 commit comments

Comments
 (0)