From 14971282cf3462fe05f40f4ae0c10fda85d9cf2c Mon Sep 17 00:00:00 2001 From: Yuri Smirnov Date: Wed, 26 Dec 2018 19:53:20 +0300 Subject: [PATCH 1/3] add sentry + sidekiq fixes --- lib/lamian/raven_context_extension.rb | 4 +--- lib/lamian/sidekiq_raven_middleware.rb | 2 +- lib/lamian/version.rb | 2 +- spec/lamian/raven_context_extension_spec.rb | 12 +----------- spec/lamian/sidekiq_raven_middleware_spec.rb | 3 +-- spec/spec_helper.rb | 2 ++ spec/support/raven.rb | 12 ++++++++++++ 7 files changed, 19 insertions(+), 18 deletions(-) create mode 100644 spec/support/raven.rb diff --git a/lib/lamian/raven_context_extension.rb b/lib/lamian/raven_context_extension.rb index c121d5e..9506091 100644 --- a/lib/lamian/raven_context_extension.rb +++ b/lib/lamian/raven_context_extension.rb @@ -6,8 +6,6 @@ module Lamian::RavenContextExtension # @see https://www.rubydoc.info/gems/sentry-raven/0.9.2/Raven/Context#extra-instance_method def extra log = Lamian.dump(format: :txt) - return super unless log - extra = super || {} - extra.merge(lamian_log: log) + log ? super.merge!(lamian_log: log) : super end end diff --git a/lib/lamian/sidekiq_raven_middleware.rb b/lib/lamian/sidekiq_raven_middleware.rb index e7f364a..a617414 100644 --- a/lib/lamian/sidekiq_raven_middleware.rb +++ b/lib/lamian/sidekiq_raven_middleware.rb @@ -8,7 +8,7 @@ def call(*) begin yield rescue Exception # rubocop:disable Lint/RescueException - Raven.extra_context(lamian_log: Lamian.dump(format: :txt)) + Raven.extra_context # Just trigger saving of the current log raise end end diff --git a/lib/lamian/version.rb b/lib/lamian/version.rb index eb31e7e..15f5b79 100644 --- a/lib/lamian/version.rb +++ b/lib/lamian/version.rb @@ -13,5 +13,5 @@ module Lamian # According to this, it is enought to specify '~> a.b' # if private API was not used and to specify '~> a.b.c' if it was - VERSION = "1.1.0" + VERSION = "1.1.1" end diff --git a/spec/lamian/raven_context_extension_spec.rb b/spec/lamian/raven_context_extension_spec.rb index 1a8bef0..b517983 100644 --- a/spec/lamian/raven_context_extension_spec.rb +++ b/spec/lamian/raven_context_extension_spec.rb @@ -1,18 +1,8 @@ # frozen_string_literal: true -require "raven" -require "raven/transports/dummy" - -Raven::Context.prepend(Lamian::RavenContextExtension) - -Raven.configure do |config| - config.dsn = "dummy://public@example.com/project-id" - config.encoding = "json" - config.logger = Logger.new(nil) -end - describe Lamian::RavenContextExtension, :cool_loggers do after { sent_events.clear } + after { Raven::Context.clear! } let(:sent_events) { Raven.client.transport.events } let(:extra_info) { JSON.parse(sent_events.last[1]).fetch("extra") } diff --git a/spec/lamian/sidekiq_raven_middleware_spec.rb b/spec/lamian/sidekiq_raven_middleware_spec.rb index 320cc79..8900c34 100644 --- a/spec/lamian/sidekiq_raven_middleware_spec.rb +++ b/spec/lamian/sidekiq_raven_middleware_spec.rb @@ -2,11 +2,10 @@ describe Lamian::SidekiqRavenMiddleware, :cool_loggers do it "call Raven.extra_context with proper lamian_log" do - expect(Raven).to receive(:extra_context).with(lamian_log: "some log\n") + expect(Raven).to receive(:extra_context) middleware_call = proc do Lamian::SidekiqRavenMiddleware.new.call do - generic_logger.info "some log" raise "some error" end end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 5d714c0..f4ce2e0 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -9,6 +9,8 @@ require "lamian" +require_relative "support/raven" + RSpec.configure do |config| config.order = :random end diff --git a/spec/support/raven.rb b/spec/support/raven.rb new file mode 100644 index 0000000..d16a347 --- /dev/null +++ b/spec/support/raven.rb @@ -0,0 +1,12 @@ +# frozen_string_literal: true + +require "raven" +require "raven/transports/dummy" + +Raven::Context.prepend(Lamian::RavenContextExtension) + +Raven.configure do |config| + config.dsn = "dummy://public@example.com/project-id" + config.encoding = "json" + config.logger = Logger.new(nil) +end From d223972f18171c15d721913e2e3be865c92d4b41 Mon Sep 17 00:00:00 2001 From: Yuri Smirnov Date: Wed, 26 Dec 2018 20:06:59 +0300 Subject: [PATCH 2/3] improve specs --- spec/lamian/sidekiq_raven_middleware_spec.rb | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/spec/lamian/sidekiq_raven_middleware_spec.rb b/spec/lamian/sidekiq_raven_middleware_spec.rb index 8900c34..8003f36 100644 --- a/spec/lamian/sidekiq_raven_middleware_spec.rb +++ b/spec/lamian/sidekiq_raven_middleware_spec.rb @@ -1,15 +1,16 @@ # frozen_string_literal: true describe Lamian::SidekiqRavenMiddleware, :cool_loggers do - it "call Raven.extra_context with proper lamian_log" do - expect(Raven).to receive(:extra_context) - + it "calls Raven.extra_context and adds Lamian.run" do middleware_call = proc do Lamian::SidekiqRavenMiddleware.new.call do + generic_logger.info "some log" raise "some error" end end + expect(Raven.extra_context).not_to have_key(:lamian_log) expect(middleware_call).to raise_error(RuntimeError, "some error") + expect(Raven.extra_context[:lamian_log]).to eq("some log\n") end end From 9644c1ca067060c4ee2fe0e03a29817ccd497bd8 Mon Sep 17 00:00:00 2001 From: Yuri Smirnov Date: Wed, 26 Dec 2018 20:50:55 +0300 Subject: [PATCH 3/3] extract cool loggers context --- spec/spec_helper.rb | 18 +----------------- spec/support/cool_loggers.rb | 17 +++++++++++++++++ 2 files changed, 18 insertions(+), 17 deletions(-) create mode 100644 spec/support/cool_loggers.rb diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index f4ce2e0..7c9203f 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -9,24 +9,8 @@ require "lamian" -require_relative "support/raven" +Dir[File.join(__dir__, "support/**/*.rb")].each { |x| require(x) } RSpec.configure do |config| config.order = :random end - -shared_context "cool loggers", :cool_loggers do - let(:generic_logger_buffer) { StringIO.new } - let(:generic_logger) { ::Logger.new(generic_logger_buffer) } - - let(:cool_formatter) do - -> (_severity, _date, _progname, message) { "#{message}\n" } - end - - before("extend generic_logger") { Lamian.extend_logger(generic_logger) } - - before("stub formatter") do - allow(Lamian.config).to receive(:formatter).and_return(cool_formatter) - generic_logger.formatter = cool_formatter - end -end diff --git a/spec/support/cool_loggers.rb b/spec/support/cool_loggers.rb new file mode 100644 index 0000000..f66e588 --- /dev/null +++ b/spec/support/cool_loggers.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true + +shared_context "cool loggers", :cool_loggers do + let(:generic_logger_buffer) { StringIO.new } + let(:generic_logger) { ::Logger.new(generic_logger_buffer) } + + let(:cool_formatter) do + -> (_severity, _date, _progname, message) { "#{message}\n" } + end + + before("extend generic_logger") { Lamian.extend_logger(generic_logger) } + + before("stub formatter") do + allow(Lamian.config).to receive(:formatter).and_return(cool_formatter) + generic_logger.formatter = cool_formatter + end +end