From 136946c2412d9d94e0cbde60b6c5400625935f3a Mon Sep 17 00:00:00 2001 From: Josh Mervine Date: Wed, 8 Jul 2015 12:24:13 -0700 Subject: [PATCH 1/4] Adding exception event handing to process_action when not an exception object. --- lib/scrolls/rails/log_subscriber.rb | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/lib/scrolls/rails/log_subscriber.rb b/lib/scrolls/rails/log_subscriber.rb index 1ecaa27..8d39e65 100644 --- a/lib/scrolls/rails/log_subscriber.rb +++ b/lib/scrolls/rails/log_subscriber.rb @@ -13,7 +13,13 @@ class LogSubscriber < ActiveSupport::LogSubscriber def process_action(event) exception = event.payload[:exception] - if exception + + if exception.present? + if exception.is_a?(Array) + exception_class_name, exception_message = exception + exception = exception_class_name.constantize.new(exception_message) + end + Scrolls.log_exception({status: 500}, exception) else Scrolls.log(extract_request_data_from_event(event)) From fd2cefdfc70061a6c11d17864366421e21d6937d Mon Sep 17 00:00:00 2001 From: Josh Mervine Date: Wed, 8 Jul 2015 12:24:33 -0700 Subject: [PATCH 2/4] Adding test for exception event handler change. --- .gitignore | 1 + Gemfile | 4 +++ Rakefile | 7 ++++ test/rails/test_log_subscriber.rb | 57 +++++++++++++++++++++++++++++++ 4 files changed, 69 insertions(+) create mode 100644 test/rails/test_log_subscriber.rb diff --git a/.gitignore b/.gitignore index 8f0d248..dc57e21 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ pkg Gemfile.lock +.bundle diff --git a/Gemfile b/Gemfile index 851fabc..d6c5858 100644 --- a/Gemfile +++ b/Gemfile @@ -1,2 +1,6 @@ source 'https://rubygems.org' gemspec + +group :development do + gem 'minitest' +end diff --git a/Rakefile b/Rakefile index c702cfc..44d09f9 100644 --- a/Rakefile +++ b/Rakefile @@ -1 +1,8 @@ require 'bundler/gem_tasks' +require 'rake/testtask' + +Rake::TestTask.new do |t| + t.libs << "test" + t.test_files = FileList['test/test_*.rb', 'test/**/test_*.rb'] + t.verbose = true +end diff --git a/test/rails/test_log_subscriber.rb b/test/rails/test_log_subscriber.rb new file mode 100644 index 0000000..8a0d7fa --- /dev/null +++ b/test/rails/test_log_subscriber.rb @@ -0,0 +1,57 @@ +require 'minitest/autorun' + +require 'active_support/core_ext/object' # provides .present? && constantize +require 'scrolls/rails/log_subscriber' + +class FakeEvent + attr_accessor :payload +end + +# mock Scrolls to something useful for this test +module Scrolls + class << self + def log_exception info, ex + @@info = info + @@ex = ex + end + + def info + @@info + end + + def exception + @@ex + end + end +end + +class ScrollsRailsLogSubscriber < Minitest::Test + def setup + @sub = Scrolls::Rails::LogSubscriber.new + @evt = FakeEvent.new + end + + def test_process_action_with_array + @evt.payload = { + exception: ['Exception', 'Test array'] + } + + @sub.process_action(@evt) + + assert_equal({status: 500}, Scrolls.info) + assert_kind_of(Exception, Scrolls.exception) + assert_equal('Test array', Scrolls.exception.message) + end + + def test_process_action_with_exception + @evt.payload = { + exception: Exception.new('Test exception') + } + + @sub.process_action(@evt) + + assert_equal({status: 500}, Scrolls.info) + assert_kind_of(Exception, Scrolls.exception) + assert_equal('Test exception', Scrolls.exception.message) + end +end From d3fd517a6769c20aecd17739f9f3d4a1ae05f428 Mon Sep 17 00:00:00 2001 From: Josh Mervine Date: Wed, 8 Jul 2015 12:25:41 -0700 Subject: [PATCH 3/4] Bumping version --- lib/scrolls/rails/version.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/scrolls/rails/version.rb b/lib/scrolls/rails/version.rb index 45c1f58..1fafc97 100644 --- a/lib/scrolls/rails/version.rb +++ b/lib/scrolls/rails/version.rb @@ -1,5 +1,5 @@ module Scrolls module Rails - VERSION = '0.0.1' + VERSION = '0.0.2' end end From 2148f59756ca8231ed13dc1bf0620aeb848cccb1 Mon Sep 17 00:00:00 2001 From: Josh Mervine Date: Wed, 8 Jul 2015 13:49:51 -0700 Subject: [PATCH 4/4] Commenting exception handler change --- lib/scrolls/rails/log_subscriber.rb | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lib/scrolls/rails/log_subscriber.rb b/lib/scrolls/rails/log_subscriber.rb index 8d39e65..a27b4ec 100644 --- a/lib/scrolls/rails/log_subscriber.rb +++ b/lib/scrolls/rails/log_subscriber.rb @@ -15,6 +15,9 @@ def process_action(event) exception = event.payload[:exception] if exception.present? + # In Rails 3.2.9 event.payload[:exception] was changed from an + # Exception object to an Array containing the e.class.name and + # e.message. Adding handling for this case here. if exception.is_a?(Array) exception_class_name, exception_message = exception exception = exception_class_name.constantize.new(exception_message)