sentry-raven 0.1 → 0.2
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/README.md +25 -2
- data/lib/raven/client.rb +2 -0
- data/lib/raven/configuration.rb +19 -0
- data/lib/raven/event.rb +16 -9
- data/lib/raven/rails/middleware/debug_exceptions_catcher.rb +3 -3
- data/lib/raven/version.rb +1 -1
- metadata +3 -3
data/README.md
CHANGED
@@ -11,7 +11,12 @@ This library is still forming, so if you are looking to just use it, please chec
|
|
11
11
|
Add the following to your `Gemfile`:
|
12
12
|
|
13
13
|
```ruby
|
14
|
-
gem "raven", :git => "https://github.com/coderanger/raven-ruby.git"
|
14
|
+
gem "sentry-raven", :git => "https://github.com/coderanger/raven-ruby.git"
|
15
|
+
```
|
16
|
+
|
17
|
+
Or install manually
|
18
|
+
```bash
|
19
|
+
$ gem install sentry-raven
|
15
20
|
```
|
16
21
|
|
17
22
|
## Usage
|
@@ -53,12 +58,15 @@ require 'raven'
|
|
53
58
|
|
54
59
|
Raven.configure do |config|
|
55
60
|
config.dsn = 'http://public:secret@example.com/project-id'
|
61
|
+
|
62
|
+
# manually configure environment if ENV['RACK_ENV'] is not defined
|
63
|
+
config.current_environment = 'production'
|
56
64
|
end
|
57
65
|
|
58
66
|
Raven.capture # Global style
|
59
67
|
|
60
68
|
Raven.capture do # Block style
|
61
|
-
|
69
|
+
1 / 0
|
62
70
|
end
|
63
71
|
```
|
64
72
|
|
@@ -68,3 +76,18 @@ end
|
|
68
76
|
$ bundle install
|
69
77
|
$ rake spec
|
70
78
|
```
|
79
|
+
|
80
|
+
## Notifications in development mode
|
81
|
+
|
82
|
+
By default events will only be sent to Sentry if your application is running in a production environment. This is configured by default if you are running a Rack application (i.e. anytime `ENV['RACK_ENV']` is set).
|
83
|
+
|
84
|
+
You can configure Raven to run in non-production environments by configuring the `environments` whitelist:
|
85
|
+
|
86
|
+
```ruby
|
87
|
+
require 'raven'
|
88
|
+
|
89
|
+
Raven.configure do |config|
|
90
|
+
config.dsn = 'http://public:secret@example.com/project-id'
|
91
|
+
config.environments = %w[ development production ]
|
92
|
+
end
|
93
|
+
```
|
data/lib/raven/client.rb
CHANGED
data/lib/raven/configuration.rb
CHANGED
@@ -19,9 +19,20 @@ module Raven
|
|
19
19
|
# Number of lines of code context to capture, or nil for none
|
20
20
|
attr_accessor :context_lines
|
21
21
|
|
22
|
+
# Whitelist of environments that will send notifications to Sentry
|
23
|
+
attr_accessor :environments
|
24
|
+
|
25
|
+
# Include module versions in reports?
|
26
|
+
attr_accessor :send_modules
|
27
|
+
|
28
|
+
attr_reader :current_environment
|
29
|
+
|
22
30
|
def initialize
|
23
31
|
self.server = ENV['SENTRY_DSN'] if ENV['SENTRY_DSN']
|
24
32
|
@context_lines = 3
|
33
|
+
self.environments = %w[ production ]
|
34
|
+
self.current_environment = ENV['RAILS_ENV'] || ENV['RACK_ENV'] || 'development'
|
35
|
+
self.send_modules = true
|
25
36
|
end
|
26
37
|
|
27
38
|
def server=(value)
|
@@ -49,5 +60,13 @@ module Raven
|
|
49
60
|
send(option)
|
50
61
|
end
|
51
62
|
|
63
|
+
def current_environment=(environment)
|
64
|
+
@current_environment = environment.to_s
|
65
|
+
end
|
66
|
+
|
67
|
+
def send_in_current_environment?
|
68
|
+
environments.include? current_environment
|
69
|
+
end
|
70
|
+
|
52
71
|
end
|
53
72
|
end
|
data/lib/raven/event.rb
CHANGED
@@ -17,25 +17,32 @@ module Raven
|
|
17
17
|
"error" => 40,
|
18
18
|
}
|
19
19
|
|
20
|
-
BACKTRACE_RE = /^(.+?):(\d+)(?::in `(.+?)')
|
20
|
+
BACKTRACE_RE = /^(.+?):(\d+)(?::in `(.+?)')?$/
|
21
21
|
|
22
22
|
attr_reader :id
|
23
23
|
attr_accessor :project, :message, :timestamp, :level
|
24
24
|
attr_accessor :logger, :culprit, :server_name, :modules, :extra
|
25
25
|
|
26
|
-
def initialize(options={}, &block)
|
27
|
-
|
26
|
+
def initialize(options={}, configuration=nil, &block)
|
27
|
+
configuration ||= Raven.configuration
|
28
28
|
|
29
|
+
@id = options[:id] || UUIDTools::UUID.random_create.hexdigest
|
29
30
|
@message = options[:message]
|
30
|
-
|
31
31
|
@timestamp = options[:timestamp] || Time.now.utc
|
32
|
-
|
33
32
|
@level = options[:level] || :error
|
34
|
-
|
35
33
|
@logger = options[:logger] || 'root'
|
36
34
|
@culprit = options[:culprit]
|
37
|
-
|
38
|
-
|
35
|
+
|
36
|
+
# Try to resolve the hostname to an FQDN, but fall back to whatever the load name is
|
37
|
+
hostname = Socket.gethostname
|
38
|
+
hostname = Socket.gethostbyname(hostname).first rescue hostname
|
39
|
+
@server_name = options[:server_name] || hostname
|
40
|
+
|
41
|
+
if configuration.send_modules && !options.has_key?(:modules)
|
42
|
+
options[:modules] = Hash[Gem::Specification.map {|spec| [spec.name, spec.version]}]
|
43
|
+
end
|
44
|
+
@modules = options[:modules]
|
45
|
+
|
39
46
|
@extra = options[:extra]
|
40
47
|
|
41
48
|
@interfaces = {}
|
@@ -92,7 +99,7 @@ module Raven
|
|
92
99
|
Raven.logger.info "Refusing to capture Raven error: #{exc.inspect}"
|
93
100
|
return nil
|
94
101
|
end
|
95
|
-
self.new do |evt|
|
102
|
+
self.new({}, configuration) do |evt|
|
96
103
|
evt.message = exc.message
|
97
104
|
evt.level = :error
|
98
105
|
evt.interface :exception do |int|
|
@@ -3,13 +3,13 @@ module Raven
|
|
3
3
|
module Middleware
|
4
4
|
module DebugExceptionsCatcher
|
5
5
|
def self.included(base)
|
6
|
-
base.send(:alias_method_chain, :render_exception, :
|
6
|
+
base.send(:alias_method_chain, :render_exception, :raven)
|
7
7
|
end
|
8
8
|
|
9
|
-
def
|
9
|
+
def render_exception_with_raven(env, exception)
|
10
10
|
evt = Raven::Event.capture_rack_exception(exception, env)
|
11
11
|
Raven.send(evt) if evt
|
12
|
-
|
12
|
+
render_exception_without_raven(env, exception)
|
13
13
|
end
|
14
14
|
end
|
15
15
|
end
|
data/lib/raven/version.rb
CHANGED
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: sentry-raven
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: "0.
|
5
|
+
version: "0.2"
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Noah Kantrowitz
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2012-
|
13
|
+
date: 2012-07-14 00:00:00 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: faraday
|
@@ -107,7 +107,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
107
107
|
requirements: []
|
108
108
|
|
109
109
|
rubyforge_project:
|
110
|
-
rubygems_version: 1.8.
|
110
|
+
rubygems_version: 1.8.24
|
111
111
|
signing_key:
|
112
112
|
specification_version: 3
|
113
113
|
summary: A gem that provides a client interface for the Sentry error logger
|