raven_logger 0.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.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/raven_logger.rb +96 -0
  3. metadata +72 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: f3d374c2bfaad45bd82865b7ce4a027a718c8499
4
+ data.tar.gz: 3abad7655ed369cb5670d237d6c3f0228c98074b
5
+ SHA512:
6
+ metadata.gz: f1f9332ab92a14cfe3862c4f57d58400163e6774e0324ad3e02d4efe92e959f929d975c329660ca99344828d4e6909e35c40743cde8246a66ccb13bdc46507f7
7
+ data.tar.gz: 1c6ec9b0c4b5a894735681e3814eda31868219b25f1c7a018ec4ec2ed18e1f1b0c738579a3cab837fd2a8851bb79207b634d46aa1751081d5cab1f2fb7ccb300
@@ -0,0 +1,96 @@
1
+ require 'securerandom'
2
+ require 'digest'
3
+ require 'socket'
4
+ require 'time'
5
+ require 'rest-client'
6
+ require 'json'
7
+ require 'git-revision'
8
+
9
+ class RavenLogger
10
+
11
+ class << self
12
+ def captureMessage(title, opts={})
13
+ new.captureMessage(title, opts)
14
+ end
15
+ end
16
+
17
+ def captureMessage(title, opts={})
18
+ raise ArgumentError.new('Event title is missing') if !title
19
+ raise ArgumentError.new('SENTRY_PROJECT_URL env variable is missing') if !ENV['SENTRY_PROJECT_URL']
20
+ raise ArgumentError.new('SENTRY_KEY env variable is missing') if !ENV['SENTRY_KEY']
21
+ raise ArgumentError.new('SENTRY_SECRET env variable is missing') if !ENV['SENTRY_SECRET']
22
+
23
+ opts = symbolize_keys(opts)
24
+ opts[:level] ||= :info
25
+ extra = opts[:extra] || {}
26
+ level = opts[:level].to_s
27
+
28
+ valid_levels = %w(fatal error warning info debug)
29
+
30
+ if !valid_levels.include? level
31
+ raise ArgumentError.new("'#{level}' is not a valid level. Please use either: #{valid_levels.join(", ")}")
32
+ end
33
+
34
+ extra.merge!(git_message: Git::Revision.message)
35
+
36
+ payload = {
37
+ "event_id": (Digest::MD5.hexdigest SecureRandom.uuid),
38
+ "timestamp": Time.now.utc.iso8601,
39
+ "message": title,
40
+ "logger": "ruby",
41
+ "release": Git::Revision.commit_short,
42
+ "server_name": Socket.gethostname,
43
+ "environment": ENV['RAILS_ENV'] || 'testing',
44
+ "level": level,
45
+ "extra": extra
46
+ }
47
+
48
+ RestClient.post ENV['SENTRY_PROJECT_URL'], payload.to_json, headers
49
+ Rails.logger.debug("Sentry event sent.".green)
50
+ nil
51
+ end
52
+
53
+ private
54
+
55
+ def headers
56
+ headers = {
57
+ "Content-Type": "application/json",
58
+ "X-Sentry-Auth": "Sentry sentry_version=7, sentry_timestamp=#{Time.now.utc.to_i}, sentry_key=#{ENV['SENTRY_KEY']}, sentry_secret=#{ENV['SENTRY_SECRET']}, sentry_client=raven-intricately/1.0"
59
+ }
60
+ end
61
+
62
+ def symbolize_keys(obj)
63
+ case obj
64
+ when Array
65
+ obj.inject([]){|res, val|
66
+ res << case val
67
+ when Hash, Array
68
+ symbolize_keys(val)
69
+ else
70
+ val
71
+ end
72
+ res
73
+ }
74
+ when Hash
75
+ obj.inject({}){|res, (key, val)|
76
+ nkey = case key
77
+ when String
78
+ key.to_sym
79
+ else
80
+ key
81
+ end
82
+ nval = case val
83
+ when Hash, Array
84
+ symbolize_keys(val)
85
+ else
86
+ val
87
+ end
88
+ res[nkey] = nval
89
+ res
90
+ }
91
+ else
92
+ obj
93
+ end
94
+ end
95
+
96
+ end
metadata ADDED
@@ -0,0 +1,72 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: raven_logger
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ platform: ruby
6
+ authors:
7
+ - Giv Parvaneh
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2018-08-02 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rest-client
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '='
18
+ - !ruby/object:Gem::Version
19
+ version: 1.7.3
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '='
25
+ - !ruby/object:Gem::Version
26
+ version: 1.7.3
27
+ - !ruby/object:Gem::Dependency
28
+ name: git-revision
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '='
32
+ - !ruby/object:Gem::Version
33
+ version: 0.0.1
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '='
39
+ - !ruby/object:Gem::Version
40
+ version: 0.0.1
41
+ description: Send arbitrary events to Sentry
42
+ email: giv@givp.org
43
+ executables: []
44
+ extensions: []
45
+ extra_rdoc_files: []
46
+ files:
47
+ - lib/raven_logger.rb
48
+ homepage: http://rubygems.org/gems/raven_logger
49
+ licenses:
50
+ - MIT
51
+ metadata: {}
52
+ post_install_message:
53
+ rdoc_options: []
54
+ require_paths:
55
+ - lib
56
+ required_ruby_version: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: '0'
61
+ required_rubygems_version: !ruby/object:Gem::Requirement
62
+ requirements:
63
+ - - ">="
64
+ - !ruby/object:Gem::Version
65
+ version: '0'
66
+ requirements: []
67
+ rubyforge_project:
68
+ rubygems_version: 2.6.14
69
+ signing_key:
70
+ specification_version: 4
71
+ summary: Ruby Raven Logger
72
+ test_files: []