sentry-raven 0.4.2 → 0.4.3
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.
Potentially problematic release.
This version of sentry-raven might be problematic. Click here for more details.
- data/lib/raven.rb +22 -20
- data/lib/raven/client.rb +1 -1
- data/lib/raven/configuration.rb +3 -0
- data/lib/raven/context.rb +19 -0
- data/lib/raven/event.rb +25 -27
- data/lib/raven/transports/http.rb +5 -1
- data/lib/raven/version.rb +1 -1
- metadata +3 -2
data/lib/raven.rb
CHANGED
@@ -1,9 +1,10 @@
|
|
1
1
|
require 'raven/version'
|
2
2
|
require 'raven/backtrace'
|
3
3
|
require 'raven/configuration'
|
4
|
-
require 'raven/
|
4
|
+
require 'raven/context'
|
5
5
|
require 'raven/client'
|
6
6
|
require 'raven/event'
|
7
|
+
require 'raven/logger'
|
7
8
|
require 'raven/rack'
|
8
9
|
require 'raven/interfaces/message'
|
9
10
|
require 'raven/interfaces/exception'
|
@@ -25,13 +26,15 @@ module Raven
|
|
25
26
|
# values for all Raven configuration options. See Raven::Configuration.
|
26
27
|
attr_writer :configuration
|
27
28
|
|
28
|
-
|
29
|
-
|
29
|
+
# Additional context for events
|
30
|
+
attr_writer :context
|
31
|
+
|
32
|
+
def context
|
33
|
+
@context ||= Context.new
|
30
34
|
end
|
31
35
|
|
32
|
-
|
33
|
-
|
34
|
-
self.logger.info "Raven #{VERSION} ready to catch errors"
|
36
|
+
def logger
|
37
|
+
@logger ||= Logger.new
|
35
38
|
end
|
36
39
|
|
37
40
|
# The configuration object.
|
@@ -45,6 +48,11 @@ module Raven
|
|
45
48
|
@client ||= Client.new(configuration)
|
46
49
|
end
|
47
50
|
|
51
|
+
# Tell the log that the client is good to go
|
52
|
+
def report_ready
|
53
|
+
self.logger.info "Raven #{VERSION} ready to catch errors"
|
54
|
+
end
|
55
|
+
|
48
56
|
# Call this method to modify defaults in your initializers.
|
49
57
|
#
|
50
58
|
# @example
|
@@ -108,22 +116,16 @@ module Raven
|
|
108
116
|
send(evt) if evt
|
109
117
|
end
|
110
118
|
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
# }
|
118
|
-
# })
|
119
|
-
def context(hash = {})
|
120
|
-
Thread.current[:sentry_context] ||= {}
|
121
|
-
Thread.current[:sentry_context].merge!(hash)
|
122
|
-
self
|
119
|
+
def user_context(options={})
|
120
|
+
self.context.user.merge!(options)
|
121
|
+
end
|
122
|
+
|
123
|
+
def tags_context(options={})
|
124
|
+
self.context.tags.merge!(options)
|
123
125
|
end
|
124
126
|
|
125
|
-
def
|
126
|
-
|
127
|
+
def extra_context(options={})
|
128
|
+
self.context.extra.merge!(options)
|
127
129
|
end
|
128
130
|
|
129
131
|
# For cross-language compat
|
data/lib/raven/client.rb
CHANGED
data/lib/raven/configuration.rb
CHANGED
@@ -51,6 +51,9 @@ module Raven
|
|
51
51
|
|
52
52
|
attr_reader :current_environment
|
53
53
|
|
54
|
+
# The Faraday adapter to be used. Will default to Net::HTTP when not set.
|
55
|
+
attr_accessor :http_adapter
|
56
|
+
|
54
57
|
IGNORE_DEFAULT = ['ActiveRecord::RecordNotFound',
|
55
58
|
'ActionController::RoutingError',
|
56
59
|
'ActionController::InvalidAuthenticityToken',
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Raven
|
2
|
+
class Context
|
3
|
+
def current
|
4
|
+
Thread.current[:sentry_context] ||= new
|
5
|
+
end
|
6
|
+
|
7
|
+
def clear!
|
8
|
+
Thread.current[:sentry_context] = nil
|
9
|
+
end
|
10
|
+
|
11
|
+
attr_reader :extra, :tags, :user
|
12
|
+
|
13
|
+
def initialize
|
14
|
+
@extra = {}
|
15
|
+
@tags = {}
|
16
|
+
@user = {}
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
data/lib/raven/event.rb
CHANGED
@@ -23,27 +23,22 @@ module Raven
|
|
23
23
|
PLATFORM = "ruby"
|
24
24
|
|
25
25
|
attr_reader :id
|
26
|
-
attr_accessor :project, :message, :timestamp, :level
|
26
|
+
attr_accessor :project, :message, :timestamp, :level
|
27
27
|
attr_accessor :logger, :culprit, :server_name, :modules, :extra, :tags
|
28
28
|
|
29
29
|
def initialize(options={}, &block)
|
30
30
|
@configuration = options[:configuration] || Raven.configuration
|
31
31
|
@interfaces = {}
|
32
32
|
|
33
|
-
|
33
|
+
context = options[:context] || Raven.context
|
34
34
|
|
35
35
|
@id = options[:id] || UUIDTools::UUID.random_create.hexdigest
|
36
36
|
@message = options[:message]
|
37
37
|
@timestamp = options[:timestamp] || Time.now.utc
|
38
38
|
|
39
|
-
@level = options[:level]
|
40
|
-
@logger = options[:logger]
|
39
|
+
@level = options[:level] || :error
|
40
|
+
@logger = options[:logger] || 'root'
|
41
41
|
@culprit = options[:culprit]
|
42
|
-
|
43
|
-
@extra = options[:extra] || {}
|
44
|
-
@tags = options[:tags] || {}
|
45
|
-
|
46
|
-
# Try to resolve the hostname to an FQDN, but fall back to whatever the load name is
|
47
42
|
@server_name = options[:server_name] || get_hostname
|
48
43
|
|
49
44
|
if @configuration.send_modules
|
@@ -51,15 +46,16 @@ module Raven
|
|
51
46
|
end
|
52
47
|
@modules = options[:modules]
|
53
48
|
|
54
|
-
|
49
|
+
@user = options[:user] || {}
|
50
|
+
@user.merge!(context.user)
|
55
51
|
|
56
|
-
|
57
|
-
@
|
58
|
-
@logger ||= @context[:logger] || 'root'
|
59
|
-
@culprit ||= @context[:culprit]
|
52
|
+
@extra = options[:extra] || {}
|
53
|
+
@extra.merge!(context.extra)
|
60
54
|
|
61
|
-
@tags
|
62
|
-
@
|
55
|
+
@tags = options[:tags] || {}
|
56
|
+
@tags.merge!(context.tags)
|
57
|
+
|
58
|
+
block.call(self) if block
|
63
59
|
|
64
60
|
# Some type coercion
|
65
61
|
@timestamp = @timestamp.strftime('%Y-%m-%dT%H:%M:%S') if @timestamp.is_a?(Time)
|
@@ -67,6 +63,7 @@ module Raven
|
|
67
63
|
end
|
68
64
|
|
69
65
|
def get_hostname
|
66
|
+
# Try to resolve the hostname to an FQDN, but fall back to whatever the load name is
|
70
67
|
hostname = Socket.gethostname
|
71
68
|
hostname = Socket.gethostbyname(hostname).first rescue hostname
|
72
69
|
end
|
@@ -93,19 +90,20 @@ module Raven
|
|
93
90
|
|
94
91
|
def to_hash
|
95
92
|
data = {
|
96
|
-
'event_id' =>
|
97
|
-
'message' =>
|
98
|
-
'timestamp' =>
|
99
|
-
'level' =>
|
100
|
-
'project' =>
|
101
|
-
'logger' =>
|
93
|
+
'event_id' => @id,
|
94
|
+
'message' => @message,
|
95
|
+
'timestamp' => @timestamp,
|
96
|
+
'level' => @level,
|
97
|
+
'project' => @project,
|
98
|
+
'logger' => @logger,
|
102
99
|
'platform' => PLATFORM,
|
103
100
|
}
|
104
|
-
data['culprit'] =
|
105
|
-
data['server_name'] =
|
106
|
-
data['modules'] =
|
107
|
-
data['extra'] =
|
108
|
-
data['tags'] =
|
101
|
+
data['culprit'] = @culprit if @culprit
|
102
|
+
data['server_name'] = @server_name if @server_name
|
103
|
+
data['modules'] = @modules if @modules
|
104
|
+
data['extra'] = @extra if @extra
|
105
|
+
data['tags'] = @tags if @tags
|
106
|
+
data['sentry.interfaces.User'] = @user if @user
|
109
107
|
@interfaces.each_pair do |name, int_data|
|
110
108
|
data[name] = int_data.to_hash
|
111
109
|
end
|
@@ -30,13 +30,17 @@ module Raven
|
|
30
30
|
:url => self.configuration[:server],
|
31
31
|
:ssl => {:verify => self.configuration.ssl_verification}
|
32
32
|
) do |builder|
|
33
|
-
builder.adapter
|
33
|
+
builder.adapter(*adapter)
|
34
34
|
builder.options[:timeout] = self.configuration.timeout if self.configuration.timeout
|
35
35
|
builder.options[:open_timeout] = self.configuration.open_timeout if self.configuration.open_timeout
|
36
36
|
end
|
37
37
|
end
|
38
38
|
end
|
39
39
|
|
40
|
+
def adapter
|
41
|
+
configuration.http_adapter || Faraday.default_adapter
|
42
|
+
end
|
43
|
+
|
40
44
|
end
|
41
45
|
|
42
46
|
end
|
data/lib/raven/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sentry-raven
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2013-
|
13
|
+
date: 2013-02-02 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: faraday
|
@@ -88,6 +88,7 @@ files:
|
|
88
88
|
- lib/raven/backtrace.rb
|
89
89
|
- lib/raven/client.rb
|
90
90
|
- lib/raven/configuration.rb
|
91
|
+
- lib/raven/context.rb
|
91
92
|
- lib/raven/error.rb
|
92
93
|
- lib/raven/event.rb
|
93
94
|
- lib/raven/interfaces/exception.rb
|