From 1e04b52f5fd8fa98442db7c04108e0d43790c16b Mon Sep 17 00:00:00 2001 From: carlad Date: Mon, 25 Jul 2016 12:42:16 +0200 Subject: [PATCH] change raven syntax --- lib/travis/api/v3/router.rb | 24 ++++++++---------------- spec/v3/error_handling_spec.rb | 15 ++++++++++++++- 2 files changed, 22 insertions(+), 17 deletions(-) diff --git a/lib/travis/api/v3/router.rb b/lib/travis/api/v3/router.rb index ad7b6f1d..49617cc7 100644 --- a/lib/travis/api/v3/router.rb +++ b/lib/travis/api/v3/router.rb @@ -1,15 +1,10 @@ - -# require 'sentry-raven' +# require 'raven' module Travis::API::V3 class Router include Travis::API::V3 attr_accessor :routes, :metrics_processor - # Raven.configure do |config| - # config.dsn = Travis.config.sentry.dsn - # end - def initialize(routes = Routes) @routes = routes @metrics_processor = Metrics::Processor.new @@ -25,7 +20,6 @@ module Travis::API::V3 env_params = params(env) factory, params = routes.factory_for(env['REQUEST_METHOD'.freeze], env['PATH_INFO'.freeze]) - raise NotFound unless factory metrics.name_after(factory) @@ -43,18 +37,16 @@ module Travis::API::V3 metrics.success(status: response[0]) response rescue Error => error - Raven.capture do - # 1 / 0 - metrics.tick(:service) + Raven.capture_exception(error) + metrics.tick(:service) - result = Result.new(access_control, :error, error) - response = V3.response(result.render(env_params, env), {}, status: error.status) + result = Result.new(access_control, :error, error) + response = V3.response(result.render(env_params, env), {}, status: error.status) - metrics.tick(:rendered) - metrics.failure(status: error.status) + metrics.tick(:rendered) + metrics.failure(status: error.status) - response - end + response end def render(result, env_params, env) diff --git a/spec/v3/error_handling_spec.rb b/spec/v3/error_handling_spec.rb index be2457eb..8ab8c81f 100644 --- a/spec/v3/error_handling_spec.rb +++ b/spec/v3/error_handling_spec.rb @@ -13,17 +13,30 @@ describe Travis::API::V3::ServiceIndex, set_app: true do end describe Travis::API::V3::Router, set_app: true do + class FixRaven < Struct.new(:app) + def call(env) + requested_at = env['requested_at'] + env['requested_at'] = env['requested_at'].to_s if env.key?('requested_at') + app.call(env) + rescue Exception => e + env['requested_at'] = requested_at + raise e + end + end + class TestError < StandardError end before do + set_app Raven::Rack.new(FixRaven.new(app)) Travis.config.sentry.dsn = "test" + Travis::Api::App.setup_monitoring end it 'Sentry captures router errors' do error = TestError.new('Konstantin broke all the thingz!') Travis::API::V3::Models::Repository.any_instance.stubs(:service).raises(error) - Raven.expects(:capture).with do |event| + Raven.expects(:send_event).with do |event| event.message == "#{error.class}: #{error.message}" end expect { get "/v3/repo/1" }.to raise_error(TestError)