sentry-raven 0.13.3 → 0.14.0
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/LICENSE +1 -1
- data/lib/raven/backtrace.rb +19 -5
- data/lib/raven/base.rb +2 -0
- data/lib/raven/configuration.rb +6 -1
- data/lib/raven/event.rb +10 -4
- data/lib/raven/integrations/rails.rb +11 -0
- data/lib/raven/integrations/rails/active_job.rb +18 -0
- data/lib/raven/interfaces/stack_trace.rb +1 -0
- data/lib/raven/linecache.rb +9 -2
- data/lib/raven/okjson.rb +1 -1
- data/lib/raven/transports/http.rb +1 -0
- data/lib/raven/version.rb +1 -1
- metadata +18 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 69cb623c7ac9a07889b6ae03ec5444319e191f8f
|
4
|
+
data.tar.gz: 8369bebd8ccf68813e9b036efe138d8dfbde4bac
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e1ba87c6185709d7933339e40688a0aa4eba22e9377dd37e97e480ead398102d3b058d6cc64af1dc3baeb4f1a5bfb1f630926a49a6030844981f2497888c4516
|
7
|
+
data.tar.gz: 389740e37e3f9e47f7ba50794278e1f656e68cc85f18cefdfd8f07fd4d4ddc15f1b775767d17655c978cc1a348ed3c646e12dc2047fb86f1cddd6e78fe7592d7
|
data/LICENSE
CHANGED
@@ -186,7 +186,7 @@ APPENDIX: How to apply the Apache License to your work.
|
|
186
186
|
same "printed page" as the copyright notice for easier
|
187
187
|
identification within third-party archives.
|
188
188
|
|
189
|
-
Copyright
|
189
|
+
Copyright 2015 Functional Software, Inc
|
190
190
|
|
191
191
|
Licensed under the Apache License, Version 2.0 (the "License");
|
192
192
|
you may not use this file except in compliance with the License.
|
data/lib/raven/backtrace.rb
CHANGED
@@ -9,7 +9,10 @@ module Raven
|
|
9
9
|
class Line
|
10
10
|
|
11
11
|
# regexp (optionnally allowing leading X: for windows support)
|
12
|
-
|
12
|
+
RUBY_INPUT_FORMAT = %r{^((?:[a-zA-Z]:)?[^:]+|<.*>):(\d+)(?::in `([^']+)')?$}.freeze
|
13
|
+
|
14
|
+
# org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:170)
|
15
|
+
JAVA_INPUT_FORMAT = %r{^(.+)\.([^\.]+)\(([^\:]+)\:(\d+)\)$}.freeze
|
13
16
|
|
14
17
|
APP_DIRS_PATTERN = /(bin|app|config|lib|test)/
|
15
18
|
|
@@ -22,16 +25,27 @@ module Raven
|
|
22
25
|
# The method of the line (such as index)
|
23
26
|
attr_reader :method
|
24
27
|
|
28
|
+
# The module name (JRuby)
|
29
|
+
attr_reader :module_name
|
30
|
+
|
25
31
|
# Parses a single line of a given backtrace
|
26
32
|
# @param [String] unparsed_line The raw line from +caller+ or some backtrace
|
27
33
|
# @return [Line] The parsed backtrace line
|
28
34
|
def self.parse(unparsed_line)
|
29
|
-
|
30
|
-
|
35
|
+
ruby_match = unparsed_line.match(RUBY_INPUT_FORMAT)
|
36
|
+
if ruby_match
|
37
|
+
_, file, number, method = ruby_match.to_a
|
38
|
+
module_name = nil
|
39
|
+
else
|
40
|
+
java_match = unparsed_line.match(JAVA_INPUT_FORMAT)
|
41
|
+
_, module_name, method, file, number = java_match.to_a
|
42
|
+
end
|
43
|
+
new(file, number, method, module_name)
|
31
44
|
end
|
32
45
|
|
33
|
-
def initialize(file, number, method)
|
46
|
+
def initialize(file, number, method, module_name)
|
34
47
|
self.file = file
|
48
|
+
self.module_name = module_name
|
35
49
|
self.number = number.to_i
|
36
50
|
self.method = method
|
37
51
|
end
|
@@ -66,7 +80,7 @@ module Raven
|
|
66
80
|
|
67
81
|
private
|
68
82
|
|
69
|
-
attr_writer :file, :number, :method
|
83
|
+
attr_writer :file, :number, :method, :module_name
|
70
84
|
end
|
71
85
|
|
72
86
|
# holder for an Array of Backtrace::Line instances
|
data/lib/raven/base.rb
CHANGED
data/lib/raven/configuration.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'certifi'
|
1
2
|
require 'logger'
|
2
3
|
require 'uri'
|
3
4
|
|
@@ -58,6 +59,9 @@ module Raven
|
|
58
59
|
# Should the SSL certificate of the server be verified?
|
59
60
|
attr_accessor :ssl_verification
|
60
61
|
|
62
|
+
# The path to the SSL certificate file
|
63
|
+
attr_accessor :ssl_ca_file
|
64
|
+
|
61
65
|
# SSl settings passed direactly to faraday's ssl option
|
62
66
|
attr_accessor :ssl
|
63
67
|
|
@@ -113,7 +117,8 @@ module Raven
|
|
113
117
|
self.send_modules = true
|
114
118
|
self.excluded_exceptions = IGNORE_DEFAULT
|
115
119
|
self.processors = [Raven::Processor::RemoveCircularReferences, Raven::Processor::UTF8Conversion, Raven::Processor::SanitizeData]
|
116
|
-
self.ssl_verification =
|
120
|
+
self.ssl_verification = true
|
121
|
+
self.ssl_ca_file = Certifi.where
|
117
122
|
self.encoding = 'gzip'
|
118
123
|
self.timeout = 1
|
119
124
|
self.open_timeout = 1
|
data/lib/raven/event.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'rubygems'
|
2
2
|
require 'socket'
|
3
3
|
require 'securerandom'
|
4
|
+
require 'digest/md5'
|
4
5
|
|
5
6
|
require 'raven/error'
|
6
7
|
require 'raven/linecache'
|
@@ -24,7 +25,8 @@ module Raven
|
|
24
25
|
|
25
26
|
attr_reader :id
|
26
27
|
attr_accessor :project, :message, :timestamp, :time_spent, :level, :logger,
|
27
|
-
:culprit, :server_name, :release, :modules, :extra, :tags, :context, :configuration
|
28
|
+
:culprit, :server_name, :release, :modules, :extra, :tags, :context, :configuration,
|
29
|
+
:checksum
|
28
30
|
|
29
31
|
def initialize(init = {})
|
30
32
|
@configuration = Raven.configuration
|
@@ -43,6 +45,7 @@ module Raven
|
|
43
45
|
@user = {}
|
44
46
|
@extra = {}
|
45
47
|
@tags = {}
|
48
|
+
@checksum = nil
|
46
49
|
|
47
50
|
yield self if block_given?
|
48
51
|
|
@@ -108,6 +111,7 @@ module Raven
|
|
108
111
|
data[:extra] = @extra if @extra
|
109
112
|
data[:tags] = @tags if @tags
|
110
113
|
data[:user] = @user if @user
|
114
|
+
data[:checksum] = @checksum if @checksum
|
111
115
|
@interfaces.each_pair do |name, int_data|
|
112
116
|
data[name.to_sym] = int_data.to_hash
|
113
117
|
end
|
@@ -186,10 +190,11 @@ module Raven
|
|
186
190
|
backtrace = Backtrace.parse(backtrace)
|
187
191
|
int.frames = backtrace.lines.reverse.map do |line|
|
188
192
|
StacktraceInterface::Frame.new.tap do |frame|
|
189
|
-
frame.abs_path = line.file
|
190
|
-
frame.function = line.method
|
193
|
+
frame.abs_path = line.file if line.file
|
194
|
+
frame.function = line.method if line.method
|
191
195
|
frame.lineno = line.number
|
192
196
|
frame.in_app = line.in_app
|
197
|
+
frame.module = line.module_name if line.module_name
|
193
198
|
|
194
199
|
if evt.configuration[:context_lines] && frame.abs_path
|
195
200
|
frame.pre_context, frame.context_line, frame.post_context = \
|
@@ -206,6 +211,7 @@ module Raven
|
|
206
211
|
end
|
207
212
|
|
208
213
|
def get_file_context(filename, lineno, context)
|
214
|
+
return nil, nil, nil unless Raven::LineCache.is_valid_file(filename)
|
209
215
|
lines = (2 * context + 1).times.map do |i|
|
210
216
|
Raven::LineCache.getline(filename, lineno - context + i)
|
211
217
|
end
|
@@ -234,7 +240,7 @@ module Raven
|
|
234
240
|
ary[2] = (ary[2] & 0x0fff) | 0x4000
|
235
241
|
ary[3] = (ary[3] & 0x3fff) | 0x8000
|
236
242
|
uuid = "%08x-%04x-%04x-%04x-%04x%08x" % ary
|
237
|
-
Digest::MD5.hexdigest(uuid)
|
243
|
+
::Digest::MD5.hexdigest(uuid)
|
238
244
|
end
|
239
245
|
end
|
240
246
|
end
|
@@ -14,6 +14,13 @@ module Raven
|
|
14
14
|
end
|
15
15
|
end
|
16
16
|
|
17
|
+
initializer 'raven.active_job' do
|
18
|
+
ActiveSupport.on_load :active_job do
|
19
|
+
require 'raven/integrations/rails/active_job'
|
20
|
+
include Raven::Rails::ActiveJob
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
17
24
|
config.after_initialize do
|
18
25
|
Raven.configure do |config|
|
19
26
|
config.logger ||= ::Rails.logger
|
@@ -34,5 +41,9 @@ module Raven
|
|
34
41
|
rake_tasks do
|
35
42
|
require 'raven/integrations/tasks'
|
36
43
|
end
|
44
|
+
|
45
|
+
runner do
|
46
|
+
Raven.capture
|
47
|
+
end
|
37
48
|
end
|
38
49
|
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module Raven
|
2
|
+
class Rails
|
3
|
+
module ActiveJob
|
4
|
+
def self.included(base)
|
5
|
+
base.class_eval do
|
6
|
+
rescue_from(Exception) do |exception|
|
7
|
+
# Do not capture exceptions when using Sidekiq so we don't capture
|
8
|
+
# The same exception twice.
|
9
|
+
unless self.class.queue_adapter.to_s == 'ActiveJob::QueueAdapters::SidekiqAdapter'
|
10
|
+
Raven.capture_exception(exception, :extra => { :active_job => self.class.name })
|
11
|
+
raise exception
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
data/lib/raven/linecache.rb
CHANGED
@@ -5,17 +5,24 @@ module Raven
|
|
5
5
|
class << self
|
6
6
|
CACHE = {}
|
7
7
|
|
8
|
+
def is_valid_file(path)
|
9
|
+
lines = getlines(path)
|
10
|
+
return lines != nil
|
11
|
+
end
|
12
|
+
|
8
13
|
def getlines(path)
|
9
14
|
CACHE[path] ||= begin
|
10
15
|
IO.readlines(path)
|
11
16
|
rescue
|
12
|
-
|
17
|
+
nil
|
13
18
|
end
|
14
19
|
end
|
15
20
|
|
16
21
|
def getline(path, n)
|
17
22
|
return nil if n < 1
|
18
|
-
getlines(path)
|
23
|
+
lines = getlines(path)
|
24
|
+
return nil if lines == nil
|
25
|
+
lines[n - 1]
|
19
26
|
end
|
20
27
|
end
|
21
28
|
end
|
data/lib/raven/okjson.rb
CHANGED
@@ -35,6 +35,7 @@ module Raven
|
|
35
35
|
|
36
36
|
ssl_configuration = self.configuration.ssl || {}
|
37
37
|
ssl_configuration[:verify] = self.configuration.ssl_verification
|
38
|
+
ssl_configuration[:ca_file] = self.configuration.ssl_ca_file
|
38
39
|
|
39
40
|
conn = Faraday.new(
|
40
41
|
:url => self.configuration[:server],
|
data/lib/raven/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sentry-raven
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.14.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sentry Team
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-07-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
@@ -24,6 +24,20 @@ dependencies:
|
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 0.7.6
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: certifi
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: rake
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -119,6 +133,7 @@ files:
|
|
119
133
|
- lib/raven/integrations/delayed_job.rb
|
120
134
|
- lib/raven/integrations/rack.rb
|
121
135
|
- lib/raven/integrations/rails.rb
|
136
|
+
- lib/raven/integrations/rails/active_job.rb
|
122
137
|
- lib/raven/integrations/rails/controller_methods.rb
|
123
138
|
- lib/raven/integrations/rails/middleware/debug_exceptions_catcher.rb
|
124
139
|
- lib/raven/integrations/railties.rb
|
@@ -164,7 +179,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
164
179
|
version: '0'
|
165
180
|
requirements: []
|
166
181
|
rubyforge_project:
|
167
|
-
rubygems_version: 2.4.
|
182
|
+
rubygems_version: 2.4.8
|
168
183
|
signing_key:
|
169
184
|
specification_version: 4
|
170
185
|
summary: A gem that provides a client interface for the Sentry error logger
|