qmin 0.0.8 → 0.0.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|