xhummingbird 0.1.0 → 0.1.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 582e31f5f12893d74a24a8bc948e544778c7ad847bd95d8acd020f9617b6e27e
4
- data.tar.gz: c68df314d986f338ee06fec0f0c43c5b6024aaba74787fde79a939096fb8171a
3
+ metadata.gz: 3f5561122802f0f1a8c90a640b69802ed5dff468da607b47c7bfbff63eaf893c
4
+ data.tar.gz: 871d26b48fb2a0dc04b8ec266c497b6366f04261e1af5c1012144f2ba9c21bfb
5
5
  SHA512:
6
- metadata.gz: 3efd449a0ae81617f6941e821ae60cfd7d248188b5d74ada5cc5c398a07232880c214fe41ae285d5e2fd0e106c6cb866556e91f7ccf33e91990ba7fbefa9e9eb
7
- data.tar.gz: 7fb41838d484f79b1a2738a726ee44486d1ce97e1cf72aa255ce235a42b235dca48bc8d5c3155c5ad65a807b246eac7ad3565e9331bdbcc5f2aaa575c212e1ee
6
+ metadata.gz: 1600c2a4cefa208e379da4313ff4a7bf9f66a21e56cfee784b24a479aa6e827c27a85be32657ceabf9c5fc796e17b3ea3f6b5c694c560f0da8f5141db628cb28
7
+ data.tar.gz: ce403ecee0b90f896d1af6c5e760c6066abdb5ff57c444d15f4401c663e49ba47328bffa34f28524ae9895d0b0da3568055eadd03af472e734a8a5e1dab141e0
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ 3.0.0
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- xhummingbird (0.1.0)
4
+ xhummingbird (0.1.1)
5
5
  ffi-rzmq
6
6
  google-protobuf
7
7
 
@@ -14,7 +14,7 @@ GEM
14
14
  ffi-rzmq-core (>= 1.0.7)
15
15
  ffi-rzmq-core (1.0.7)
16
16
  ffi
17
- google-protobuf (3.15.5-x86_64-linux)
17
+ google-protobuf (3.15.6-x86_64-linux)
18
18
  minitest (5.14.4)
19
19
  parallel (1.20.1)
20
20
  parser (3.0.0.0)
@@ -0,0 +1,21 @@
1
+ require 'xhummingbird'
2
+
3
+ raise "Set #{Xhummingbird::Client::XH_SERVER} environment variable" unless Xhummingbird.enabled?
4
+
5
+ Xhummingbird.send_trace(
6
+ title: "CustomTagTrace",
7
+ message: "CustomTags",
8
+ tags: {
9
+ tag_a: 42,
10
+ tag_b: "foo",
11
+ tag_c: :bar
12
+ }
13
+ )
14
+
15
+ begin
16
+ raise 'Something wrong'
17
+ rescue => e
18
+ Xhummingbird.send_exception(e, tags: {path: __FILE__})
19
+ end
20
+
21
+ sleep 1 # Await sending
data/lib/xhummingbird.rb CHANGED
@@ -11,7 +11,7 @@ require_relative "xhummingbird/protos/event_pb"
11
11
  module Xhummingbird
12
12
  class Error < StandardError; end
13
13
 
14
- def self.send_trace(title:, message: "", level: 1)
14
+ def self.send_trace(title:, message: "", level: 1, tags: {})
15
15
  return unless enabled?
16
16
 
17
17
  send(
@@ -19,14 +19,14 @@ module Xhummingbird
19
19
  title: title.to_s,
20
20
  message: message.to_s,
21
21
  trace: caller,
22
- tags: default_tags,
22
+ tags: default_tags.merge(format_hash(tags)),
23
23
  timestamp: Time.now
24
24
  )
25
25
  rescue
26
26
  raise Error
27
27
  end
28
28
 
29
- def self.send_exception(exception, level: 2)
29
+ def self.send_exception(exception, level: 2, tags: {})
30
30
  return unless enabled?
31
31
 
32
32
  send(
@@ -34,7 +34,7 @@ module Xhummingbird
34
34
  title: exception.class.name,
35
35
  message: exception.message,
36
36
  trace: exception.backtrace,
37
- tags: default_tags,
37
+ tags: default_tags.merge(format_hash(tags)),
38
38
  timestamp: Time.now
39
39
  )
40
40
  rescue
@@ -55,10 +55,11 @@ module Xhummingbird
55
55
 
56
56
  def self.default_tags
57
57
  {
58
- hostname: Socket.gethostname,
59
- ruby_version: RUBY_VERSION,
60
- pid: Process.pid.to_s,
61
- thread_object_id: Thread.current.object_id.to_s
58
+ "default/sdk" => "Ruby #{Xhummingbird::VERSION}",
59
+ "default/hostname" => Socket.gethostname,
60
+ "default/ruby_version" => RUBY_VERSION,
61
+ "default/pid" => Process.pid.to_s,
62
+ "default/thread_object_id" => Thread.current.object_id.to_s
62
63
  }
63
64
  end
64
65
 
@@ -67,4 +68,14 @@ module Xhummingbird
67
68
  message = Event.encode(event)
68
69
  Client.instance.send(message)
69
70
  end
71
+
72
+ def self.format_hash(hash)
73
+ formatted = {}
74
+
75
+ hash.each do |k, v|
76
+ formatted[k.to_s] = v.to_s
77
+ end
78
+
79
+ formatted
80
+ end
70
81
  end
@@ -0,0 +1 @@
1
+ require_relative 'rack/capture_exception'
@@ -0,0 +1,37 @@
1
+ module Xhummingbird
2
+ module Rack
3
+ class CaptureException
4
+ def initialize(app)
5
+ @app = app
6
+ end
7
+
8
+ def call(env)
9
+ p env
10
+
11
+ begin
12
+ response = @app.call(env)
13
+ rescue => e
14
+ Xhummingbird.send_exception(e, tags: convert_to_rack_tags(env))
15
+ end
16
+
17
+ error = env['rack.exception'] || env['sinatra.error']
18
+
19
+ Xhummingbird.send_exception(error, tags: convert_to_rack_tags(env)) if error
20
+
21
+ response
22
+ end
23
+
24
+ private
25
+
26
+ def convert_to_rack_tags(env)
27
+ tags = {}
28
+
29
+ env.each do |k, v|
30
+ tags["rack_env/" + k.to_s] = v.to_s rescue nil
31
+ end
32
+
33
+ tags
34
+ end
35
+ end
36
+ end
37
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Xhummingbird
4
- VERSION = "0.1.0"
4
+ VERSION = "0.1.1"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: xhummingbird
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - xmisao
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-03-13 00:00:00.000000000 Z
11
+ date: 2021-03-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ffi-rzmq
@@ -47,6 +47,7 @@ extra_rdoc_files: []
47
47
  files:
48
48
  - ".gitignore"
49
49
  - ".rubocop.yml"
50
+ - ".ruby-version"
50
51
  - CODE_OF_CONDUCT.md
51
52
  - Gemfile
52
53
  - Gemfile.lock
@@ -55,6 +56,7 @@ files:
55
56
  - Rakefile
56
57
  - bin/console
57
58
  - bin/setup
59
+ - examples/custom_tags.rb
58
60
  - examples/send_exception.rb
59
61
  - examples/send_trace.rb
60
62
  - examples/short_name.rb
@@ -63,6 +65,8 @@ files:
63
65
  - lib/xhummingbird.rb
64
66
  - lib/xhummingbird/client.rb
65
67
  - lib/xhummingbird/protos/event_pb.rb
68
+ - lib/xhummingbird/rack.rb
69
+ - lib/xhummingbird/rack/capture_exception.rb
66
70
  - lib/xhummingbird/short_name.rb
67
71
  - lib/xhummingbird/version.rb
68
72
  - xhummingbird.gemspec