qmin 0.0.8 → 0.0.9
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +3 -2
- data/Gemfile +1 -1
- data/lib/qmin/reporting/mail.rb +1 -36
- data/lib/qmin/reporting/mail/mail_builder.rb +38 -0
- data/lib/qmin/resque/background_call_job.rb +12 -4
- data/lib/qmin/strategy/inline.rb +5 -1
- data/lib/qmin/version.rb +1 -1
- data/spec/qmin/reporting/inline_spec.rb +4 -4
- data/spec/qmin/reporting/mail/mail_builder_spec.rb +23 -0
- data/spec/qmin/reporting/mail_spec.rb +8 -6
- metadata +4 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3ff3f0d1fbde9d321b9724c17b8509ee901767be
|
4
|
+
data.tar.gz: 544629dc2e489f2cfab3502fe4057c5e3c44f850
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 24f64d0830c27904e64e72e015e90ef46941689362065eb4ec4b50ebb70141ad23994ad2b393d4ad5af1c89534fcfae94715f8c471592d3dd35ab4163f34437b
|
7
|
+
data.tar.gz: 2fdb9d6d4ca92329e51f72a8e32d3d37f633fc83014ca9fbdc29036e48e76bdc29aabf3ca442b129e87fd2d7b1a74590448829c51d6c2c416fa2a3fa0b070b56
|
data/.travis.yml
CHANGED
data/Gemfile
CHANGED
data/lib/qmin/reporting/mail.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'mail'
|
2
|
+
require 'qmin/reporting/mail/mail_builder'
|
2
3
|
|
3
4
|
module Qmin
|
4
5
|
module Reporting
|
@@ -50,42 +51,6 @@ module Qmin
|
|
50
51
|
mail.deliver
|
51
52
|
end
|
52
53
|
|
53
|
-
|
54
|
-
class MailBuilder
|
55
|
-
def initialize(exception, mail_to, mail_from)
|
56
|
-
@exception, @mail_to, @mail_from = exception, mail_to, mail_from
|
57
|
-
end
|
58
|
-
|
59
|
-
attr_reader :exception, :mail_to, :mail_from
|
60
|
-
|
61
|
-
def build
|
62
|
-
mail = ::Mail.new
|
63
|
-
|
64
|
-
mail.to mail_to
|
65
|
-
mail.from mail_from
|
66
|
-
mail.subject subject
|
67
|
-
mail.body clean_backtrace.join("\n")
|
68
|
-
|
69
|
-
mail
|
70
|
-
end
|
71
|
-
|
72
|
-
private
|
73
|
-
|
74
|
-
def subject
|
75
|
-
"[ERROR] Qmin Report: #{exception.message}"
|
76
|
-
end
|
77
|
-
|
78
|
-
# copied from exception_notification gem
|
79
|
-
# http://github.com/smartinez87/exception_notification
|
80
|
-
def clean_backtrace
|
81
|
-
if defined?(Rails) && Rails.respond_to?(:backtrace_cleaner)
|
82
|
-
Rails.backtrace_cleaner.send(:filter, exception.backtrace)
|
83
|
-
else
|
84
|
-
exception.backtrace
|
85
|
-
end
|
86
|
-
end
|
87
|
-
end
|
88
|
-
|
89
54
|
end
|
90
55
|
end
|
91
56
|
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
module Qmin
|
2
|
+
module Reporting
|
3
|
+
class MailBuilder
|
4
|
+
def initialize(exception, mail_to, mail_from)
|
5
|
+
@exception, @mail_to, @mail_from = exception, mail_to, mail_from
|
6
|
+
end
|
7
|
+
|
8
|
+
attr_reader :exception, :mail_to, :mail_from
|
9
|
+
|
10
|
+
def build
|
11
|
+
mail = ::Mail.new
|
12
|
+
|
13
|
+
mail.to mail_to
|
14
|
+
mail.from mail_from
|
15
|
+
mail.subject subject
|
16
|
+
mail.body clean_backtrace.join("\n")
|
17
|
+
|
18
|
+
mail
|
19
|
+
end
|
20
|
+
|
21
|
+
private
|
22
|
+
|
23
|
+
def subject
|
24
|
+
"[ERROR] Qmin Report: #{exception.message}"
|
25
|
+
end
|
26
|
+
|
27
|
+
# copied from exception_notification gem
|
28
|
+
# http://github.com/smartinez87/exception_notification
|
29
|
+
def clean_backtrace
|
30
|
+
if defined?(Rails) && Rails.respond_to?(:backtrace_cleaner)
|
31
|
+
Rails.backtrace_cleaner.send(:filter, exception.backtrace)
|
32
|
+
else
|
33
|
+
exception.backtrace
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -2,13 +2,21 @@ module Qmin
|
|
2
2
|
module Resque
|
3
3
|
class BackgroundCallJob
|
4
4
|
def self.perform(*args)
|
5
|
-
|
5
|
+
begin
|
6
|
+
new(*args).perform
|
7
|
+
rescue => e
|
8
|
+
::Qmin::Qmin.current.report(e)
|
9
|
+
end
|
6
10
|
end
|
7
11
|
|
8
12
|
def initialize(klass, method_name, id)
|
9
|
-
|
10
|
-
|
11
|
-
|
13
|
+
begin
|
14
|
+
@klass = klass.is_a?(Class) ? klass : klass.constantize
|
15
|
+
@method_name = method_name
|
16
|
+
@id = id
|
17
|
+
rescue => e
|
18
|
+
::Qmin::Qmin.current.report(e)
|
19
|
+
end
|
12
20
|
end
|
13
21
|
|
14
22
|
def perform
|
data/lib/qmin/strategy/inline.rb
CHANGED
@@ -8,7 +8,11 @@ module Qmin
|
|
8
8
|
|
9
9
|
# call method directly
|
10
10
|
def background_call(instance, method_name, *args)
|
11
|
-
|
11
|
+
begin
|
12
|
+
instance.send(::Qmin.method_name_for_instance(instance, method_name), *args)
|
13
|
+
rescue => e
|
14
|
+
::Qmin::Qmin.current.report(e)
|
15
|
+
end
|
12
16
|
end
|
13
17
|
end
|
14
18
|
end
|
data/lib/qmin/version.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
require File.expand_path '../../spec_helper', File.dirname(__FILE__)
|
2
|
+
require File.expand_path '../../../lib/qmin', File.dirname(__FILE__)
|
3
3
|
|
4
4
|
describe 'Qmin::Reporting::Inline' do
|
5
5
|
let(:error_producer){ TestClass.new(123) }
|
@@ -14,7 +14,7 @@ describe 'Qmin::Reporting::Inline' do
|
|
14
14
|
Qmin::Qmin.default_strategy = Qmin::Strategy::Noop
|
15
15
|
lambda{
|
16
16
|
error_producer.raise_error
|
17
|
-
}.should_not raise_error
|
17
|
+
}.should_not raise_error
|
18
18
|
end
|
19
19
|
|
20
20
|
describe 'resque strategy' do
|
@@ -25,7 +25,7 @@ describe 'Qmin::Reporting::Inline' do
|
|
25
25
|
it 'raises no error with resque strategy when enqueueing the job' do
|
26
26
|
lambda{
|
27
27
|
error_producer.raise_error
|
28
|
-
}.should_not raise_error
|
28
|
+
}.should_not raise_error
|
29
29
|
end
|
30
30
|
|
31
31
|
it 'raises error when job is performing' do
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require File.expand_path '../../../spec_helper', File.dirname(__FILE__)
|
2
|
+
require File.expand_path '../../../../lib/qmin', File.dirname(__FILE__)
|
3
|
+
|
4
|
+
describe 'Qmin::Reporting::MailBuilder' do
|
5
|
+
|
6
|
+
|
7
|
+
let(:message) { 'Exceptional' }
|
8
|
+
let(:backtrace) { ['Line 1', 'Line 2'] }
|
9
|
+
let(:exception) { err = StandardError.new(message); err.set_backtrace(backtrace); err }
|
10
|
+
let(:mail_to) { 'receiver@example.com' }
|
11
|
+
let(:mail_from) { 'notifier@example.com' }
|
12
|
+
|
13
|
+
it 'builds mail' do
|
14
|
+
mail = Qmin::Reporting::MailBuilder.new(exception, mail_to, mail_from).build
|
15
|
+
mail.should_not be_blank
|
16
|
+
mail.should be_kind_of(Mail::Message)
|
17
|
+
mail.subject.should match(%r/#{message}$/)
|
18
|
+
mail.body.should include(backtrace.join("\n"))
|
19
|
+
mail.to.should eql [mail_to]
|
20
|
+
mail.from.should eql [mail_from]
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
@@ -1,5 +1,5 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
require File.expand_path '../../spec_helper', File.dirname(__FILE__)
|
2
|
+
require File.expand_path '../../../lib/qmin', File.dirname(__FILE__)
|
3
3
|
|
4
4
|
describe 'Qmin::Reporting::Mail' do
|
5
5
|
|
@@ -16,10 +16,12 @@ describe 'Qmin::Reporting::Mail' do
|
|
16
16
|
|
17
17
|
let(:error_producer){ TestClass.new(123) }
|
18
18
|
|
19
|
-
it '
|
19
|
+
it 'report mail for inline strategy' do
|
20
20
|
lambda{
|
21
21
|
error_producer.raise_error
|
22
|
-
}.
|
22
|
+
}.should_not raise_error(TestClass::CustomError)
|
23
|
+
|
24
|
+
Mail::TestMailer.deliveries.should_not be_empty
|
23
25
|
end
|
24
26
|
|
25
27
|
describe 'resque strategy' do
|
@@ -30,13 +32,13 @@ describe 'Qmin::Reporting::Mail' do
|
|
30
32
|
it 'raises no error with resque strategy when enqueuing the job' do
|
31
33
|
lambda{
|
32
34
|
error_producer.raise_error
|
33
|
-
}.should_not raise_error
|
35
|
+
}.should_not raise_error
|
34
36
|
end
|
35
37
|
|
36
38
|
it 'raises error when job is performing' do
|
37
39
|
lambda{
|
38
40
|
Qmin::Resque::BackgroundCallJob.new(TestClass, :raise_error, error_producer.id).perform
|
39
|
-
}.should_not raise_error
|
41
|
+
}.should_not raise_error
|
40
42
|
|
41
43
|
Mail::TestMailer.deliveries.should_not be_empty
|
42
44
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: qmin
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- the-architect
|
@@ -101,6 +101,7 @@ files:
|
|
101
101
|
- lib/qmin/qmin.rb
|
102
102
|
- lib/qmin/reporting/inline.rb
|
103
103
|
- lib/qmin/reporting/mail.rb
|
104
|
+
- lib/qmin/reporting/mail/mail_builder.rb
|
104
105
|
- lib/qmin/reporting/noop.rb
|
105
106
|
- lib/qmin/resque/background_call_job.rb
|
106
107
|
- lib/qmin/resque/base_job.rb
|
@@ -113,6 +114,7 @@ files:
|
|
113
114
|
- spec/qmin/core_ext/string_spec.rb
|
114
115
|
- spec/qmin/qmin_spec.rb
|
115
116
|
- spec/qmin/reporting/inline_spec.rb
|
117
|
+
- spec/qmin/reporting/mail/mail_builder_spec.rb
|
116
118
|
- spec/qmin/reporting/mail_spec.rb
|
117
119
|
- spec/qmin/resque/background_call_job_spec.rb
|
118
120
|
- spec/qmin/resque/base_job_spec.rb
|
@@ -149,6 +151,7 @@ test_files:
|
|
149
151
|
- spec/qmin/core_ext/string_spec.rb
|
150
152
|
- spec/qmin/qmin_spec.rb
|
151
153
|
- spec/qmin/reporting/inline_spec.rb
|
154
|
+
- spec/qmin/reporting/mail/mail_builder_spec.rb
|
152
155
|
- spec/qmin/reporting/mail_spec.rb
|
153
156
|
- spec/qmin/resque/background_call_job_spec.rb
|
154
157
|
- spec/qmin/resque/base_job_spec.rb
|