honeycomb-rails 0.3.0 → 0.4.0

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: 20540b339eef388e9906ce50a0c3b7efbb8cb282189400bf7230d1005f166ea7
4
- data.tar.gz: 855af5e90804fdab8f7f2aba2641352673ef5e6ce1abff2953f9926077b2b968
3
+ metadata.gz: 3ce38870b1d7d5dc68b425b3e4bf323ea3e26b4d59b2bad85270b17f4f444b2e
4
+ data.tar.gz: 8f30aa96990892d0cb6515b119bff5aac96045e1b9fc1bb1137febd72b7ac91a
5
5
  SHA512:
6
- metadata.gz: be8cb30c03e21a4ca871d85817526dc627b5c35b8192f047a5342a86656bf45fde7bcf1ac8270603a1d8daec7ac02e54f356a3d0e7449f0f3fbffb668e7ecefa
7
- data.tar.gz: ce2c4b9085ac5e8471619b3747cc99eb07e7a759ebdd5f8a223bd9decc3ad368fc07789fbd46416cd31caf44f6279c624b1a6f972a384f8bb49c1563976d2582
6
+ metadata.gz: ca245585297cb2f654828cf2729b064a174c13187023dfdd9b113c793ad39dd0084edb065a6476e75fd35bd5d8c36e08527065d3b48a8887b8fdf8a4fa89d1a6
7
+ data.tar.gz: ee159ce39880ac7438fb904d5d8600d824df005fce2d42002bc63d934f8e861f9bc84047a6c5046f3122ebb594bada4128e73c8912377f89038d76f97bb6f50d
@@ -9,6 +9,9 @@ module HoneycombRails
9
9
  @record_flash = true
10
10
  @record_user = :detect
11
11
  @logger = Rails.logger
12
+ @capture_exceptions = true
13
+ @capture_exception_backtraces = true
14
+ @sample_rate = 1
12
15
  end
13
16
 
14
17
  # Whether to record flash messages (default: true).
@@ -45,6 +48,27 @@ module HoneycombRails
45
48
 
46
49
  # The Honeycomb write key for your team (must be specified).
47
50
  attr_accessor :writekey
51
+
52
+ # If set, determines how to record the sample rate for a given Honeycomb
53
+ # event. (default: 1, do not sample)
54
+ #
55
+ # Valid values:
56
+ # * Integer - sample Honeycomb events at a constant rate
57
+ # * 1 or lower - disable sampling on this dataset; capture all events
58
+ # * TODO: :rails - default Rails dynamic sampling?
59
+ #
60
+ # You can also pass a Proc, which will be called with the current controller
61
+ # instance during each request, and which should return a sample rate for
62
+ # the request in question.
63
+ attr_accessor :sample_rate
64
+
65
+ # If set to true, captures exception class name / message along with Rails
66
+ # request events. (default: true)
67
+ attr_accessor :capture_exceptions
68
+
69
+ # If set to true, captures backtraces when capturing exception metadata.
70
+ # No-op if capture_exceptions is false. (default: true)
71
+ attr_accessor :capture_exception_backtraces
48
72
  end
49
73
 
50
74
  class << self
@@ -65,5 +65,24 @@ module HoneycombRails
65
65
  end
66
66
  end
67
67
  end
68
+ module ActionControllerFilters
69
+ def self.included(controller_class)
70
+ controller_class.around_action :honeycomb_attach_exception_metadata
71
+ end
72
+
73
+ def honeycomb_attach_exception_metadata
74
+ begin
75
+ yield
76
+ rescue StandardError => exception
77
+ honeycomb_metadata[:exception_class] = exception.class.to_s
78
+ honeycomb_metadata[:exception_message] = exception.message
79
+ if HoneycombRails.config.capture_exception_backtraces
80
+ honeycomb_metadata[:exception_source] = Rails.backtrace_cleaner.clean(exception.backtrace)
81
+ end
82
+
83
+ raise
84
+ end
85
+ end
86
+ end
68
87
  end
69
88
  end
@@ -19,6 +19,10 @@ module HoneycombRails
19
19
  config.after_initialize do
20
20
  writekey = HoneycombRails.config.writekey
21
21
  @libhoney = Libhoney::Client.new(writekey: writekey)
22
+
23
+ if HoneycombRails.config.capture_exceptions
24
+ ::ActionController::Base.include(Overrides::ActionControllerFilters)
25
+ end
22
26
  end
23
27
 
24
28
  config.after_initialize do
@@ -37,7 +37,19 @@ module HoneycombRails
37
37
  data.merge!(event.payload[Constants::EVENT_METADATA_KEY])
38
38
  end
39
39
 
40
- @libhoney.send_now(data)
40
+ honeycomb_event = @libhoney.event
41
+ honeycomb_event.add(data)
42
+
43
+ case HoneycombRails.config.sample_rate
44
+ when Proc
45
+ honeycomb_event.sample_rate = HoneycombRails.config.sample_rate.call(event.payload)
46
+ when Integer
47
+ if HoneycombRails.config.sample_rate > 1
48
+ honeycomb_event.sample_rate = HoneycombRails.config.sample_rate
49
+ end
50
+ end
51
+
52
+ honeycomb_event.send
41
53
  end
42
54
  end
43
55
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: honeycomb-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sam Stokes
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2017-12-05 00:00:00.000000000 Z
12
+ date: 2017-12-06 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: libhoney