exception_notification-squash_notifier 0.1.1.2 → 0.1.1.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/exception_notifier/squash_notifier/base.rb +50 -0
- data/lib/exception_notifier/squash_notifier/rails.rb +7 -3
- data/lib/exception_notifier/squash_notifier/ruby.rb +23 -0
- data/lib/exception_notifier/squash_notifier/version.rb +1 -1
- data/lib/exception_notifier/squash_notifier.rb +5 -65
- data/lib/exception_notifier/squash_ruby/rails.rb +14 -12
- data/lib/exception_notifier/squash_ruby.rb +2 -5
- metadata +3 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2b71edc1bca114c09a3f718c18e31b0ad36f2454
|
4
|
+
data.tar.gz: 2687ab743009ba8a776c7e3f9ab1dc64797e65fd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 21b4fd84ae9c1fc2b5c4d847ace7355863d6d0d827b2c54b93b69ea889da0a50133f6696df1b55946727506abd30a7470f9aad7d35c05dc450d7c08e04db8fd7
|
7
|
+
data.tar.gz: 64fec832378419250d23b5c99493268f08fcb37c807979b012a69525defbfee94808deab1e740382519e3c2fe3ab5677f30f7bc4e099aeccf5afb37cc9db7ffa
|
@@ -0,0 +1,50 @@
|
|
1
|
+
module ExceptionNotifier
|
2
|
+
class SquashNotifier
|
3
|
+
# Factory class:
|
4
|
+
def self.new(*args, &p)
|
5
|
+
return SquashRailsNotifier.new(*args, &p) if defined? Rails
|
6
|
+
SquashRubyNotifier.new(*args, &p)
|
7
|
+
end
|
8
|
+
|
9
|
+
class BaseNotifier
|
10
|
+
cattr_accessor :whitelisted_env_vars
|
11
|
+
# This accepts RegEx, so to not-whitelist, add an entry of /.*/
|
12
|
+
self.whitelisted_env_vars = []
|
13
|
+
|
14
|
+
def self.default_options
|
15
|
+
{
|
16
|
+
filter_env_vars: self.whitelist_env_filter
|
17
|
+
}
|
18
|
+
end
|
19
|
+
|
20
|
+
def default_options
|
21
|
+
self.class.default_options
|
22
|
+
end
|
23
|
+
|
24
|
+
def self.whitelist_env_filter
|
25
|
+
# Remove any entries from the 'env' var that are not in the 'whitelisted_env_var' list
|
26
|
+
lambda do |env|
|
27
|
+
env.select do |key, val|
|
28
|
+
#NB: we want to close-over `self` so we can access the class var
|
29
|
+
#NB:
|
30
|
+
# - When `allowed` is a Regexp, === is like ((a =~ b) ? true : false)
|
31
|
+
# - When `allowed` is a String, === is like (a == b.to_str)
|
32
|
+
# - When `allowed` is a Symbol, === is (a == b)
|
33
|
+
self.whitelisted_env_vars.any? {|allowed| allowed === key }
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
#####
|
39
|
+
|
40
|
+
def initialize(options)
|
41
|
+
Squash::Ruby.configure default_options.merge(options)
|
42
|
+
Squash::Ruby.configure disabled: !Squash::Ruby.configuration(:api_key)
|
43
|
+
end
|
44
|
+
|
45
|
+
def call(exception, data={})
|
46
|
+
raise NotImplementedError
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
require 'pp'
|
4
4
|
|
5
|
-
class ExceptionNotifier::SquashNotifier
|
5
|
+
class ExceptionNotifier::SquashNotifier::SquashRailsNotifier < ExceptionNotifier::SquashNotifier::SquashRubyNotifier
|
6
6
|
self.whitelisted_env_vars += [
|
7
7
|
'action_dispatch.request.parameters',
|
8
8
|
'action_dispatch.request.path_parameters',
|
@@ -26,6 +26,12 @@ class ExceptionNotifier::SquashNotifier
|
|
26
26
|
'SERVER_SOFTWARE',
|
27
27
|
]
|
28
28
|
|
29
|
+
def call(exception, data={})
|
30
|
+
super(exception, munge_env(data))
|
31
|
+
end
|
32
|
+
|
33
|
+
protected
|
34
|
+
|
29
35
|
def munge_env(data)
|
30
36
|
return data unless data.has_key?(:env)
|
31
37
|
|
@@ -45,8 +51,6 @@ class ExceptionNotifier::SquashNotifier
|
|
45
51
|
))
|
46
52
|
end
|
47
53
|
|
48
|
-
private
|
49
|
-
|
50
54
|
def occurence_data(request: nil, session: nil, rack_env: {})
|
51
55
|
#TODO: Remove when done:
|
52
56
|
# flash_key = defined?(ActionDispatch) ? ActionDispatch::Flash::KEY : 'flash'
|
@@ -0,0 +1,23 @@
|
|
1
|
+
class ExceptionNotifier::SquashNotifier::SquashRubyNotifier < ExceptionNotifier::SquashNotifier::BaseNotifier
|
2
|
+
self.whitelisted_env_vars += [
|
3
|
+
'BUNDLE_BIN_PATH',
|
4
|
+
'BUNDLE_GEMFILE',
|
5
|
+
'CONTENT_LENGTH',
|
6
|
+
'CONTENT_TYPE',
|
7
|
+
'DOCUMENT_ROOT',
|
8
|
+
'GEM_HOME',
|
9
|
+
'HOME',
|
10
|
+
'ORIGINAL_FULLPATH',
|
11
|
+
'PATH',
|
12
|
+
'PATH_INFO',
|
13
|
+
'PWD',
|
14
|
+
'RUBYOPT',
|
15
|
+
'TMPDIR',
|
16
|
+
'USER',
|
17
|
+
]
|
18
|
+
|
19
|
+
def call(exception, data={})
|
20
|
+
#NB: You can pass a `user_data` hash to #notify, and most attr's will be placed into a `user_data` field
|
21
|
+
Squash::Ruby.notify(exception, data)
|
22
|
+
end
|
23
|
+
end
|
@@ -4,69 +4,9 @@ require "active_support/core_ext/module/attribute_accessors"
|
|
4
4
|
require "exception_notifier"
|
5
5
|
|
6
6
|
require "exception_notifier/squash_ruby"
|
7
|
-
|
8
|
-
module ExceptionNotifier
|
9
|
-
class SquashNotifier
|
10
|
-
cattr_accessor :whitelisted_env_vars
|
11
|
-
# This accepts RegEx, so to not-whitelist, add an entry of /.*/
|
12
|
-
self.whitelisted_env_vars = [
|
13
|
-
'BUNDLE_BIN_PATH',
|
14
|
-
'BUNDLE_GEMFILE',
|
15
|
-
'CONTENT_LENGTH',
|
16
|
-
'CONTENT_TYPE',
|
17
|
-
'DOCUMENT_ROOT',
|
18
|
-
'GEM_HOME',
|
19
|
-
'HOME',
|
20
|
-
'ORIGINAL_FULLPATH',
|
21
|
-
'PATH',
|
22
|
-
'PATH_INFO',
|
23
|
-
'PWD',
|
24
|
-
'RUBYOPT',
|
25
|
-
'TMPDIR',
|
26
|
-
'USER',
|
27
|
-
]
|
28
|
-
|
29
|
-
def self.default_options
|
30
|
-
{
|
31
|
-
filter_env_vars: self.whitelist_env_filter
|
32
|
-
}
|
33
|
-
end
|
34
|
-
|
35
|
-
def default_options
|
36
|
-
self.class.default_options
|
37
|
-
end
|
38
|
-
|
39
|
-
def self.whitelist_env_filter
|
40
|
-
# Remove any entries from the 'env' var that are not in the 'whitelisted_env_var' list
|
41
|
-
lambda do |env|
|
42
|
-
env.select do |key, val|
|
43
|
-
#NB: we want to close-over `self` so we can access the class var
|
44
|
-
#NB:
|
45
|
-
# - When `allowed` is a Regexp, === is like ((a =~ b) ? true : false)
|
46
|
-
# - When `allowed` is a String, === is like (a == b.to_str)
|
47
|
-
# - When `allowed` is a Symbol, === is (a == b)
|
48
|
-
self.whitelisted_env_vars.any? {|allowed| allowed === key }
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
|
-
#####
|
54
|
-
|
55
|
-
def initialize(options)
|
56
|
-
Squash::Ruby.configure default_options.merge(options)
|
57
|
-
Squash::Ruby.configure disabled: !Squash::Ruby.configuration(:api_key)
|
58
|
-
end
|
59
|
-
|
60
|
-
def call(exception, data={})
|
61
|
-
#NB: You can pass a `user_data` hash to #notify, and most attr's will be placed into a `user_data` field
|
62
|
-
Squash::Ruby.notify(exception, munge_env(data))
|
63
|
-
end
|
64
|
-
|
65
|
-
def munge_env(data)
|
66
|
-
data
|
67
|
-
end
|
68
|
-
end
|
69
|
-
end
|
70
|
-
|
71
7
|
# Extend class if you find Rails is being used:
|
72
|
-
require 'exception_notifier/
|
8
|
+
require 'exception_notifier/squash_ruby/rails' if defined? Rails
|
9
|
+
|
10
|
+
require 'exception_notifier/squash_notifier/base'
|
11
|
+
require 'exception_notifier/squash_notifier/ruby'
|
12
|
+
require 'exception_notifier/squash_notifier/rails'
|
@@ -8,19 +8,21 @@ module Squash::Ruby
|
|
8
8
|
params session flash cookies]
|
9
9
|
)
|
10
10
|
|
11
|
-
|
12
|
-
|
13
|
-
|
11
|
+
class << self
|
12
|
+
def client_name
|
13
|
+
'squash-notifier-rails'
|
14
|
+
end
|
14
15
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
16
|
+
def failsafe_log(tag, message)
|
17
|
+
logger = Rails.respond_to?(:logger) ? Rails.logger : RAILS_DEFAULT_LOGGER
|
18
|
+
if (logger.respond_to?(:tagged))
|
19
|
+
logger.tagged(tag) { logger.error message }
|
20
|
+
else
|
21
|
+
logger.error "[#{tag}]\t#{message}"
|
22
|
+
end
|
23
|
+
rescue Object => err
|
24
|
+
$stderr.puts "Couldn't write to failsafe log (#{err.to_s}); writing to stderr instead."
|
25
|
+
$stderr.puts "#{Time.now.to_s}\t[#{tag}]\t#{message}"
|
21
26
|
end
|
22
|
-
rescue Object => err
|
23
|
-
$stderr.puts "Couldn't write to failsafe log (#{err.to_s}); writing to stderr instead."
|
24
|
-
$stderr.puts "#{Time.now.to_s}\t[#{tag}]\t#{message}"
|
25
27
|
end
|
26
28
|
end
|
@@ -6,12 +6,12 @@ module Squash::Ruby
|
|
6
6
|
# These are supposed to contain lambdas/procs that will filter the contents of these arrays before sending them up to the Squash server
|
7
7
|
|
8
8
|
class << self
|
9
|
-
private
|
10
|
-
|
11
9
|
def client_name
|
12
10
|
'squash-notifier'
|
13
11
|
end
|
14
12
|
|
13
|
+
private
|
14
|
+
|
15
15
|
alias :environment_data__original :environment_data
|
16
16
|
|
17
17
|
def environment_data
|
@@ -27,6 +27,3 @@ module Squash::Ruby
|
|
27
27
|
end
|
28
28
|
end
|
29
29
|
end
|
30
|
-
|
31
|
-
# Extend class if you find Rails is being used:
|
32
|
-
require 'exception_notifier/squash_ruby/rails' if defined? Rails
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: exception_notification-squash_notifier
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.1.
|
4
|
+
version: 0.1.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Will Robertson
|
@@ -154,7 +154,9 @@ files:
|
|
154
154
|
- bin/exception-notifier-squash-notifier
|
155
155
|
- exception-notification-squash-notifier.gemspec
|
156
156
|
- lib/exception_notifier/squash_notifier.rb
|
157
|
+
- lib/exception_notifier/squash_notifier/base.rb
|
157
158
|
- lib/exception_notifier/squash_notifier/rails.rb
|
159
|
+
- lib/exception_notifier/squash_notifier/ruby.rb
|
158
160
|
- lib/exception_notifier/squash_notifier/version.rb
|
159
161
|
- lib/exception_notifier/squash_ruby.rb
|
160
162
|
- lib/exception_notifier/squash_ruby/rails.rb
|