Skip to content

Commit

Permalink
Merge pull request #129 from FundingCircle/USM-1820-add-support-for-s…
Browse files Browse the repository at this point in the history
…idekiq-7

[USM-1820] Add support for Sidekiq 7
  • Loading branch information
bliof-fc committed Nov 3, 2023
2 parents ed96c3d + 08114ce commit 05f9c12
Show file tree
Hide file tree
Showing 23 changed files with 868 additions and 201 deletions.
11 changes: 2 additions & 9 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,10 +30,6 @@ test_build: &test_build

version: 2
jobs:
ruby-2.4:
docker:
- image: circleci/ruby:2.4
<<: *test_build
ruby-2.5:
docker:
- image: circleci/ruby:2.5
Expand All @@ -45,10 +41,12 @@ jobs:
ruby-2.7:
docker:
- image: cimg/ruby:2.7
- image: redis:7
<<: *test_build
ruby-3.0:
docker:
- image: cimg/ruby:3.0
- image: redis:7
<<: *test_build
rubocop:
<<: *basic_build
Expand Down Expand Up @@ -83,10 +81,6 @@ workflows:
filters:
tags:
only: /.*/
- ruby-2.4:
filters:
tags:
only: /.*/
- ruby-2.5:
filters:
tags:
Expand All @@ -112,7 +106,6 @@ workflows:
ignore: /.*/
requires:
- rubocop
- ruby-2.4
- ruby-2.5
- ruby-2.6
- ruby-2.7
Expand Down
42 changes: 30 additions & 12 deletions Appraisals
Original file line number Diff line number Diff line change
@@ -1,13 +1,3 @@
if Gem::Version.new(RUBY_VERSION) < Gem::Version.new('2.4.0')
appraise 'rails32' do
gem 'rails', '~> 3.2.0'
end

appraise 'rails40' do
gem 'rails', '~> 4.0.0'
end
end

if Gem::Version.new(RUBY_VERSION) < Gem::Version.new('2.7.0')
appraise 'rails42' do
gem 'rails', '~> 4.2.0'
Expand All @@ -31,13 +21,29 @@ if Gem::Version.new(RUBY_VERSION) > Gem::Version.new('2.5.0')
gem 'rails', '~> 6.0.0'
end

appraise 'sidekiq6' do
gem 'sidekiq', '~> 6.0'
appraise 'sidekiq60' do
gem 'sidekiq', '~> 6.0.0'
end

appraise 'sidekiq61' do
gem 'sidekiq', '~> 6.1.0'
end

appraise 'sidekiq62' do
gem 'sidekiq', '~> 6.2.0'
end

appraise 'sidekiq63' do
gem 'sidekiq', '~> 6.3.0'
end

appraise 'sidekiq64' do
gem 'sidekiq', '~> 6.4.0'
end

appraise 'sidekiq65' do
gem 'sidekiq', '~> 6.5.0'
end
end

if Gem::Version.new(RUBY_VERSION) > Gem::Version.new('2.7.0')
Expand All @@ -48,6 +54,18 @@ if Gem::Version.new(RUBY_VERSION) > Gem::Version.new('2.7.0')
appraise 'rails70' do
gem 'rails', '~> 7.0.0'
end

appraise 'sidekiq7' do
gem 'sidekiq', '~> 7.0'
end

appraise 'sidekiq70' do
gem 'sidekiq', '~> 7.0.0'
end

appraise 'sidekiq71' do
gem 'sidekiq', '~> 7.1.0'
end
end

appraise 'sidekiq51' do
Expand Down
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,10 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](http://keepachangelog.com/)
and this project adheres to [Semantic Versioning](http://semver.org/).

## [2.7.0] - 2023-03-28
### Added
- Support for sidekiq 7

## [2.6.1] - 2022-02-22
### Fixed
- Fix compatibility with sidekiq 6.4.1
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,7 @@ LOGA_FORMAT=simple rackup

### Sidekiq

Loga `2.3` provides an out-of-the-box support for `Sidekiq ~> 5.0`.
Loga `2.7` provides an out-of-the-box support for `Sidekiq ~> 7.0`.

## Output Example

Expand Down
4 changes: 2 additions & 2 deletions gemfiles/rails32.gemfile → gemfiles/sidekiq60.gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@

source "https://rubygems.org"

gem "rails", "~> 3.2.0"
gem "sidekiq", "~> 6.0.0"

group :test do
gem "simplecov"
gem "simplecov", "~> 0.17.0"
end

gemspec path: "../"
4 changes: 2 additions & 2 deletions gemfiles/rails40.gemfile → gemfiles/sidekiq62.gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@

source "https://rubygems.org"

gem "rails", "~> 4.0.0"
gem "sidekiq", "~> 6.2.0"

group :test do
gem "simplecov"
gem "simplecov", "~> 0.17.0"
end

gemspec path: "../"
11 changes: 11 additions & 0 deletions gemfiles/sidekiq63.gemfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# This file was generated by Appraisal

source "https://rubygems.org"

gem "sidekiq", "~> 6.3.0"

group :test do
gem "simplecov", "~> 0.17.0"
end

gemspec path: "../"
11 changes: 11 additions & 0 deletions gemfiles/sidekiq64.gemfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# This file was generated by Appraisal

source "https://rubygems.org"

gem "sidekiq", "~> 6.4.0"

group :test do
gem "simplecov", "~> 0.17.0"
end

gemspec path: "../"
11 changes: 11 additions & 0 deletions gemfiles/sidekiq65.gemfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# This file was generated by Appraisal

source "https://rubygems.org"

gem "sidekiq", "~> 6.5.0"

group :test do
gem "simplecov", "~> 0.17.0"
end

gemspec path: "../"
2 changes: 1 addition & 1 deletion gemfiles/sidekiq6.gemfile → gemfiles/sidekiq7.gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

source "https://rubygems.org"

gem "sidekiq", "~> 6.0"
gem "sidekiq", "~> 7.0"

group :test do
gem "simplecov", "~> 0.17.0"
Expand Down
11 changes: 11 additions & 0 deletions gemfiles/sidekiq70.gemfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# This file was generated by Appraisal

source "https://rubygems.org"

gem "sidekiq", "~> 7.0.0"

group :test do
gem "simplecov", "~> 0.17.0"
end

gemspec path: "../"
11 changes: 11 additions & 0 deletions gemfiles/sidekiq71.gemfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# This file was generated by Appraisal

source "https://rubygems.org"

gem "sidekiq", "~> 7.1.0"

group :test do
gem "simplecov", "~> 0.17.0"
end

gemspec path: "../"
41 changes: 32 additions & 9 deletions lib/loga/sidekiq.rb
Original file line number Diff line number Diff line change
@@ -1,24 +1,47 @@
# frozen_string_literal: true

module Loga
module Sidekiq
def self.configure_logging
return unless defined?(::Sidekiq)
return if Gem::Version.new(::Sidekiq::VERSION) < Gem::Version.new('5.0')

if Gem::Version.new(::Sidekiq::VERSION) < Gem::Version.new('6.0')
require 'loga/sidekiq5/job_logger'

::Sidekiq.configure_server do |config|
config.options[:job_logger] = Loga::Sidekiq5::JobLogger
end
configure_for_sidekiq5
elsif Gem::Version.new(::Sidekiq::VERSION) < Gem::Version.new('7.0')
require 'loga/sidekiq6/job_logger'
configure_for_sidekiq6
elsif Gem::Version.new(::Sidekiq::VERSION) < Gem::Version.new('8.0')
configure_for_sidekiq7
end
end

::Sidekiq.configure_server do |config|
config.options[:job_logger] = Loga::Sidekiq6::JobLogger
end
def self.configure_for_sidekiq5
require 'loga/sidekiq5/job_logger'

::Sidekiq.configure_server do |config|
config.options[:job_logger] = Loga::Sidekiq5::JobLogger
end

::Sidekiq.logger = Loga.configuration.logger
end

def self.configure_for_sidekiq6
require 'loga/sidekiq6/job_logger'

::Sidekiq.configure_server do |config|
config.options[:job_logger] = Loga::Sidekiq6::JobLogger
end

::Sidekiq.logger = Loga.configuration.logger
end

def self.configure_for_sidekiq7
require 'loga/sidekiq7/job_logger'

::Sidekiq.configure_server do |config|
config[:job_logger] = Loga::Sidekiq7::JobLogger
config.logger = Loga.configuration.logger
end
end
end
end
51 changes: 51 additions & 0 deletions lib/loga/sidekiq7/job_logger.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
# frozen_string_literal: true

require 'sidekiq/job_logger'

module Loga
module Sidekiq7
class JobLogger < ::Sidekiq::JobLogger
EVENT_TYPE = 'sidekiq'.freeze

def call(item, _queue)
start = ::Process.clock_gettime(::Process::CLOCK_MONOTONIC)

yield

::Sidekiq::Context.add(:elapsed, elapsed(start))

loga_log(message: "#{item['class']} with jid: '#{item['jid']}' done", item: item)
rescue Exception => e # rubocop:disable Lint/RescueException
::Sidekiq::Context.add(:elapsed, elapsed(start))

loga_log(
message: "#{item['class']} with jid: '#{item['jid']}' fail", item: item,
exception: e
)

raise
end

private

def loga_log(message:, item:, exception: nil)
data = item.select do |k, _v|
%w[created_at enqueued_at jid queue retry
class].include? k
end

data['params'] = item['args']

data['exception'] = exception if exception

event = Event.new(type: EVENT_TYPE, message: message, data: data)

if exception
@logger.warn(event)
else
@logger.info(event)
end
end
end
end
end
2 changes: 1 addition & 1 deletion lib/loga/version.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
module Loga
VERSION = '2.6.1'.freeze
VERSION = '2.7.0'.freeze
end
Loading

0 comments on commit 05f9c12

Please sign in to comment.