hawk-ruby 0.1.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.
Files changed (80) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +10 -0
  3. data/LICENSE +21 -0
  4. data/README.md +104 -0
  5. data/docs/configuration.md +160 -0
  6. data/docs/integrations.md +149 -0
  7. data/docs/releasing.md +23 -0
  8. data/docs/verification.md +85 -0
  9. data/lib/hawk/boundary.rb +26 -0
  10. data/lib/hawk/breadcrumbs/logger.rb +64 -0
  11. data/lib/hawk/breadcrumbs/net_http.rb +63 -0
  12. data/lib/hawk/breadcrumbs/rails.rb +24 -0
  13. data/lib/hawk/breadcrumbs.rb +92 -0
  14. data/lib/hawk/client.rb +175 -0
  15. data/lib/hawk/configuration.rb +138 -0
  16. data/lib/hawk/delayed_job.rb +61 -0
  17. data/lib/hawk/delivery.rb +113 -0
  18. data/lib/hawk/diagnostics.rb +53 -0
  19. data/lib/hawk/event.rb +136 -0
  20. data/lib/hawk/filter.rb +36 -0
  21. data/lib/hawk/filtered_fields.rb +56 -0
  22. data/lib/hawk/framework_filter.rb +16 -0
  23. data/lib/hawk/hook.rb +12 -0
  24. data/lib/hawk/job_context.rb +89 -0
  25. data/lib/hawk/json_value.rb +77 -0
  26. data/lib/hawk/process_hooks.rb +24 -0
  27. data/lib/hawk/rack/body.rb +76 -0
  28. data/lib/hawk/rack.rb +71 -0
  29. data/lib/hawk/rails/action_cable.rb +79 -0
  30. data/lib/hawk/rails/active_job.rb +74 -0
  31. data/lib/hawk/rails/error_subscriber.rb +38 -0
  32. data/lib/hawk/rails/integration.rb +51 -0
  33. data/lib/hawk/rails/payload_filter.rb +34 -0
  34. data/lib/hawk/rails.rb +5 -0
  35. data/lib/hawk/rake.rb +29 -0
  36. data/lib/hawk/release.rb +31 -0
  37. data/lib/hawk/resque.rb +77 -0
  38. data/lib/hawk/scope.rb +108 -0
  39. data/lib/hawk/scope_store.rb +55 -0
  40. data/lib/hawk/sidekiq.rb +80 -0
  41. data/lib/hawk/source.rb +83 -0
  42. data/lib/hawk/token.rb +53 -0
  43. data/lib/hawk/transport.rb +111 -0
  44. data/lib/hawk/version.rb +5 -0
  45. data/lib/hawk.rb +85 -0
  46. data/sig/hawk/boundary.rbs +7 -0
  47. data/sig/hawk/breadcrumbs/logger.rbs +17 -0
  48. data/sig/hawk/breadcrumbs/net_http.rbs +16 -0
  49. data/sig/hawk/breadcrumbs/rails.rbs +7 -0
  50. data/sig/hawk/breadcrumbs.rbs +13 -0
  51. data/sig/hawk/client.rbs +41 -0
  52. data/sig/hawk/configuration.rbs +61 -0
  53. data/sig/hawk/delayed_job.rbs +24 -0
  54. data/sig/hawk/delivery.rbs +27 -0
  55. data/sig/hawk/diagnostics.rbs +24 -0
  56. data/sig/hawk/event.rbs +24 -0
  57. data/sig/hawk/filter.rbs +13 -0
  58. data/sig/hawk/filtered_fields.rbs +11 -0
  59. data/sig/hawk/framework_filter.rbs +5 -0
  60. data/sig/hawk/hook.rbs +5 -0
  61. data/sig/hawk/job_context.rbs +15 -0
  62. data/sig/hawk/json_value.rbs +17 -0
  63. data/sig/hawk/process_hooks.rbs +7 -0
  64. data/sig/hawk/rack.rbs +74 -0
  65. data/sig/hawk/rails/action_cable.rbs +40 -0
  66. data/sig/hawk/rails/active_job.rbs +34 -0
  67. data/sig/hawk/rails/error_subscriber.rbs +9 -0
  68. data/sig/hawk/rails/payload_filter.rbs +16 -0
  69. data/sig/hawk/rails.rbs +26 -0
  70. data/sig/hawk/rake.rbs +13 -0
  71. data/sig/hawk/release.rbs +6 -0
  72. data/sig/hawk/resque.rbs +25 -0
  73. data/sig/hawk/scope.rbs +31 -0
  74. data/sig/hawk/scope_store.rbs +15 -0
  75. data/sig/hawk/sidekiq.rbs +29 -0
  76. data/sig/hawk/source.rbs +18 -0
  77. data/sig/hawk/token.rbs +14 -0
  78. data/sig/hawk/transport.rbs +32 -0
  79. data/sig/hawk.rbs +16 -0
  80. metadata +223 -0
@@ -0,0 +1,17 @@
1
+ module Hawk
2
+ class JSONValue
3
+ @seen: Hash[Object, bool]
4
+ @remaining: Integer
5
+ def self.normalize: (top) -> json
6
+ def self.object: (top) -> payload
7
+ def initialize: () -> void
8
+ def visit: (top, Integer) -> json
9
+
10
+ private
11
+
12
+ def scalar: (top) -> json
13
+ def text: (String) -> String
14
+ def container: (Array[top] | Hash[top, top], Integer) -> json
15
+ def mapping: (Hash[top, top], Integer) -> payload
16
+ end
17
+ end
@@ -0,0 +1,7 @@
1
+ module Hawk
2
+ module ProcessHooks
3
+ self.@installed: bool?
4
+ def self.install: () -> void
5
+ def self.report_exit: (Exception?) -> void
6
+ end
7
+ end
data/sig/hawk/rack.rbs ADDED
@@ -0,0 +1,74 @@
1
+ module Hawk
2
+ type rack_headers = Hash[String, String | Array[String]]
3
+ type rack_body = _RackEnumerableBody | _RackCallableBody
4
+ type rack_response = [Integer, rack_headers, rack_body]
5
+
6
+ interface _RackProtocol
7
+ def respond_to?: (Symbol, ?bool) -> bool
8
+ end
9
+
10
+ interface _RackEnumerableBody
11
+ include _RackProtocol
12
+ def each: () { (String) -> void } -> top
13
+ end
14
+
15
+ interface _RackCallableBody
16
+ include _RackProtocol
17
+ def call: (top) -> top
18
+ end
19
+
20
+ interface _RackFileBody
21
+ include _RackEnumerableBody
22
+ def to_path: () -> String
23
+ end
24
+
25
+ interface _RackClosableBody
26
+ def close: () -> top
27
+ end
28
+
29
+ interface _RackApp
30
+ def call: (Hash[String, top]) -> rack_response
31
+ end
32
+
33
+ class Rack
34
+ @app: _RackApp
35
+ @client: Client?
36
+ @integration: Symbol
37
+ def initialize: (_RackApp, ?client: Client?, ?integration: Symbol) -> void
38
+ def call: (Hash[String, top]) -> rack_response
39
+
40
+ private
41
+
42
+ def active_client: () -> Client?
43
+ def invoke: (Client, Hash[String, top]) -> rack_response
44
+ def metadata: (Hash[String, top]) -> payload
45
+ def optional_metadata: (payload, Hash[String, top]) -> payload
46
+ def headers: (Hash[String, top]) -> payload
47
+
48
+ class Body
49
+ @body: _RackEnumerableBody
50
+ @client: Client
51
+ @scope: Scope
52
+ def self.wrap: (rack_body, client: Client, scope: Scope) -> rack_body
53
+ def initialize: (_RackEnumerableBody, client: Client, scope: Scope) -> void
54
+ def each: () -> Enumerator[String, top]
55
+ | () { (String) -> void } -> top
56
+ def close: () -> top
57
+ end
58
+
59
+ class FileBody < Body
60
+ @file_body: _RackFileBody
61
+ def initialize: (_RackFileBody, client: Client, scope: Scope) -> void
62
+ def to_path: () -> String
63
+ end
64
+
65
+ class CallableBody
66
+ @body: _RackCallableBody
67
+ @client: Client
68
+ @scope: Scope
69
+ def initialize: (_RackCallableBody, client: Client, scope: Scope) -> void
70
+ def call: (top) -> top
71
+ def close: () -> top
72
+ end
73
+ end
74
+ end
@@ -0,0 +1,40 @@
1
+ module Hawk::Rails
2
+ interface _CableChannel
3
+ def perform_action: (Hash[String, top]) -> top
4
+ def subscribe_to_channel: () -> top
5
+ def unsubscribe_from_channel: () -> top
6
+ end
7
+
8
+ interface _CableConnection
9
+ def handle_open: () -> top
10
+ def handle_close: () -> top
11
+ end
12
+
13
+ interface _CableRescue
14
+ def rescue_with_handler: (Exception) -> Exception?
15
+ end
16
+
17
+ module ActionCable
18
+ self.@installed: bool?
19
+ def self.install: () -> void
20
+ def self.client: () -> Hawk::Client?
21
+ def self.run: [A] (Object, String) { () -> A } -> A
22
+ def self.report: (Exception, handled: bool) -> String?
23
+
24
+ module ChannelMethods : _CableChannel
25
+ def perform_action: (Hash[String, top]) -> top
26
+ def subscribe_to_channel: () -> top
27
+ def unsubscribe_from_channel: () -> top
28
+ end
29
+
30
+ module ConnectionMethods : _CableConnection
31
+ private
32
+ def handle_open: () -> top
33
+ def handle_close: () -> top
34
+ end
35
+
36
+ module RescueMethods : _CableRescue
37
+ def rescue_with_handler: (Exception) -> Exception?
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,34 @@
1
+ module Hawk::Rails
2
+ interface _ActiveJobExecutor
3
+ def execute: (Hash[String, top]) -> top
4
+ end
5
+
6
+ interface _ActiveJobInstance
7
+ def serialize: () -> Hash[String, top]
8
+ def deserialize: (Hash[String, top]) -> top
9
+ def perform_now: () -> top
10
+ def job_id: () -> String
11
+ def queue_name: () -> String
12
+ def executions: () -> Integer
13
+ def arguments: () -> Array[top]
14
+ end
15
+
16
+ module ActiveJob
17
+ self.@installed: bool?
18
+ def self.install: () -> void
19
+ def self.client: () -> Hawk::Client?
20
+ def self.run: [A] (Hash[String, top], top) { () -> A } -> A
21
+ def self.metadata: (Hawk::Client, Hash[String, top]) -> Hawk::payload
22
+
23
+ module ClassMethods : _ActiveJobExecutor
24
+ def execute: (Hash[String, top]) -> top
25
+ end
26
+
27
+ module InstanceMethods : _ActiveJobInstance
28
+ @hawk_context: Hawk::payload?
29
+ def serialize: () -> Hash[String, top]
30
+ def deserialize: (Hash[String, top]) -> top
31
+ def perform_now: () -> top
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,9 @@
1
+ module Hawk::Rails
2
+ class ErrorSubscriber
3
+ self.@installed: bool?
4
+ def self.install: () -> void
5
+ def report: (Exception, handled: bool, severity: Symbol, context: top, ?source: String?) -> void
6
+ private
7
+ def request_owned?: (Hawk::Client, Exception, String?) -> bool
8
+ end
9
+ end
@@ -0,0 +1,16 @@
1
+ module Hawk
2
+ interface _ParameterFilter
3
+ def filter: (payload) -> top
4
+ end
5
+ module Rails
6
+ class PayloadFilter
7
+ PATHS: Array[Array[String]]
8
+ @filter: _ParameterFilter
9
+ def initialize: (_ParameterFilter) -> void
10
+ def call: (payload) -> payload
11
+ private
12
+ def filter: (payload) -> payload
13
+ def filter_tree: (String, json) -> json
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,26 @@
1
+ module Hawk
2
+ interface _RailsErrorReporter
3
+ def subscribe: (Hawk::Rails::ErrorSubscriber) -> void
4
+ end
5
+ interface _RailsMiddlewareStack
6
+ def insert_after: (Class, Class, ?integration: Symbol) -> void
7
+ end
8
+
9
+ interface _RailsConfiguration
10
+ def filter_parameters: () -> Array[top]
11
+ end
12
+
13
+ interface _RailsApplication
14
+ def config: () -> _RailsConfiguration
15
+ def middleware: () -> _RailsMiddlewareStack
16
+ end
17
+
18
+ module Rails
19
+ def self.configure: (Configuration) -> void
20
+ def self.activate_integrations: (Configuration) -> void
21
+ def self.integration_client: (Symbol) -> Client?
22
+ end
23
+
24
+ class Railtie
25
+ end
26
+ end
data/sig/hawk/rake.rbs ADDED
@@ -0,0 +1,13 @@
1
+ module Hawk
2
+ interface _RakeTask
3
+ def name: () -> String
4
+ def execute: (?top) -> top
5
+ end
6
+
7
+ module Rake
8
+ module TaskMethods : _RakeTask
9
+ def execute: (?top) -> top
10
+ end
11
+ def self.install: () -> void
12
+ end
13
+ end
@@ -0,0 +1,6 @@
1
+ module Hawk
2
+ module Release
3
+ def self.detect: (Configuration) -> String?
4
+ def self.git_revision: () -> String?
5
+ end
6
+ end
@@ -0,0 +1,25 @@
1
+ module Hawk
2
+ interface _ResqueJob
3
+ def perform: () -> bool
4
+ def payload: () -> Hash[String, top]
5
+ def queue: () -> String
6
+ end
7
+
8
+ interface _ResqueFailure
9
+ def create: (?Hash[Symbol, top]) -> top
10
+ end
11
+
12
+ module Resque
13
+ def self.install: () -> void
14
+ def self.client: () -> Client?
15
+ def self.metadata: (Client, Hash[String, top], top) -> payload
16
+ def self.run: [A] (Hash[String, top], String) { () -> A } -> A
17
+ def self.report_failure: (Hash[Symbol, top]) -> void
18
+ module JobMethods : _ResqueJob
19
+ def perform: () -> bool
20
+ end
21
+ module FailureMethods : _ResqueFailure
22
+ def create: (?Hash[Symbol, top]) -> top
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,31 @@
1
+ module Hawk
2
+ class Scope
3
+ class Ledger
4
+ @errors: Hash[Exception, bool]
5
+ def initialize: () -> void
6
+ def accept: (Exception, ?evict: bool) -> (:duplicate | :overflow | :accepted)
7
+ end
8
+
9
+ attr_reader context: payload
10
+ attr_reader user: payload?
11
+ attr_reader anonymous_id: String
12
+ attr_accessor addons: payload
13
+ attr_accessor breadcrumbs: Array[payload]
14
+ attr_accessor ledger: Ledger
15
+ attr_accessor boundary: bool
16
+ attr_accessor request_metadata: (^() -> payload)?
17
+ def initialize: (?context: raw_context, ?user: raw_context?, ?anonymous_id: String) -> void
18
+ @filtered_context_keys: Hash[String, bool]
19
+ @filtered_user: bool
20
+ def set_context: (raw_context) -> void
21
+ def set_user: (raw_context?) -> void
22
+ def restore_filtered: (raw_context, raw_context?) -> void
23
+ def filtered_paths: (?except_context: Array[String], ?user_override: bool) -> Array[Array[String]]
24
+ def event_addons: () -> payload
25
+ def event_data: (raw_context, raw_context?, raw_context?, payload) -> { context: payload, user: payload, breadcrumbs: Array[payload], addons: payload, filtered_paths: Array[Array[String]] }
26
+ def copy: () -> Scope
27
+ private
28
+ def update_context: (raw_context, bool) -> void
29
+ def update_user: (raw_context?, bool) -> void
30
+ end
31
+ end
@@ -0,0 +1,15 @@
1
+ module Hawk
2
+ class ScopeStore
3
+ @configuration: Configuration
4
+ @anonymous_id: String
5
+ @scope_key: String
6
+ @escape_key: String
7
+ def initialize: (Configuration, String) -> void
8
+ def current: () -> Scope
9
+ def replace: (Scope) -> void
10
+ def remember_escape: (Exception) -> void
11
+ def consume_escape: (Exception) -> bool
12
+ def clear_escape: () -> void
13
+ def clear: () -> void
14
+ end
15
+ end
@@ -0,0 +1,29 @@
1
+ module Hawk
2
+ interface _MiddlewareChain
3
+ def add: (Class) -> void
4
+ end
5
+
6
+ interface _SidekiqConfig
7
+ def client_middleware: () { (_MiddlewareChain) -> void } -> void
8
+ def server_middleware: () { (_MiddlewareChain) -> void } -> void
9
+ def error_handlers: () -> Array[top]
10
+ end
11
+
12
+ module Sidekiq
13
+ def self.install: () -> void
14
+ def self.register_client: (_SidekiqConfig) -> void
15
+ def self.register: (_SidekiqConfig) -> void
16
+ def self.client: () -> Client?
17
+ def self.metadata: (Client, Hash[String, top]) -> payload
18
+ class ClientMiddleware
19
+ def call: [A] (top, Hash[String, top], String, ?top) { () -> A } -> A
20
+ end
21
+ class ServerMiddleware
22
+ def call: [A] (top, Hash[String, top], String) { () -> A } -> A
23
+ end
24
+ class ErrorHandler
25
+ def call: (Exception, Hash[Symbol, top], ?top) -> void
26
+ end
27
+ ERROR_HANDLER: ErrorHandler
28
+ end
29
+ end
@@ -0,0 +1,18 @@
1
+ module Hawk
2
+ class Source
3
+ @enabled: bool
4
+ @roots: Array[String]
5
+ def initialize: (Configuration) -> void
6
+ def frames: (Exception) -> Array[payload]
7
+
8
+ private
9
+
10
+ def location_frame: (Thread::Backtrace::Location) -> payload?
11
+ def realpath: (String) -> String?
12
+ def parse: (String) -> payload?
13
+ def frame: (String, Integer, String?) -> payload?
14
+ def snippets: (String, Integer) -> Array[payload]
15
+ def readable_path: (String) -> String?
16
+ def excerpt: (String, Integer) -> Array[payload]
17
+ end
18
+ end
@@ -0,0 +1,14 @@
1
+ module Hawk
2
+ class ConfigurationError < ArgumentError
3
+ end
4
+
5
+ class Token
6
+ LABEL: Regexp
7
+ @integration_id: String
8
+ def self.decode: (String) -> Token
9
+ def self.integration_id: (top) -> String?
10
+ def self.valid_secret?: (top) -> bool
11
+ def initialize: (String) -> void
12
+ def endpoint: () -> URI::HTTPS
13
+ end
14
+ end
@@ -0,0 +1,32 @@
1
+ module Hawk
2
+ interface _Transport
3
+ def available?: () -> bool
4
+ def send: (String) -> Symbol
5
+ end
6
+
7
+ class Transport
8
+ class ResponseTooLarge < StandardError
9
+ end
10
+
11
+ @configuration: Configuration
12
+ @uri: URI::HTTP?
13
+ @mutex: Thread::Mutex
14
+ @pid: Integer
15
+ @cooldown_until: Float
16
+ def initialize: (Configuration) -> void
17
+ def available?: () -> bool
18
+ def send: (String) -> Symbol
19
+
20
+ private
21
+
22
+ def reset: () -> void
23
+ def monotonic: () -> Float
24
+ def connection: (URI::HTTP) -> Net::HTTP
25
+ def request: (String, URI::HTTP) -> Symbol
26
+ def handle: (Net::HTTPResponse) -> Symbol
27
+ def response_body: (Net::HTTPResponse) -> String
28
+ def success?: (String) -> bool
29
+ def cooldown: (String?) -> void
30
+ def retry_delay: (String?) -> Float
31
+ end
32
+ end
data/sig/hawk.rbs ADDED
@@ -0,0 +1,16 @@
1
+ module Hawk
2
+ self.@client: Client?
3
+ VERSION: String
4
+ type json = nil | bool | Integer | Float | String | Array[json] | Hash[String, json]
5
+ def self.client: () -> Client?
6
+ def self.init: () { (Configuration) -> void } -> Client
7
+ def self.capture_exception: (Exception, ?context: raw_context, ?user: raw_context?, ?level: Symbol) -> String?
8
+ def self.capture_message: (String, ?context: raw_context, ?user: raw_context?, ?level: Symbol) -> String?
9
+ def self.set_context: (raw_context) -> void
10
+ def self.add_breadcrumb: (raw_context) -> void
11
+ def self.set_user: (raw_context?) -> void
12
+ def self.with_scope: [A] () { (Scope) -> A } -> A
13
+ def self.capture: [A] () { () -> A } -> A
14
+ def self.flush: (?timeout: Float?) -> bool
15
+ def self.close: (?timeout: Float?) -> bool
16
+ end
metadata ADDED
@@ -0,0 +1,223 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: hawk-ruby
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Leonid Svyatov
8
+ bindir: bin
9
+ cert_chain: []
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
+ dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: base64
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - ">="
17
+ - !ruby/object:Gem::Version
18
+ version: '0.2'
19
+ - - "<"
20
+ - !ruby/object:Gem::Version
21
+ version: '1'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ requirements:
26
+ - - ">="
27
+ - !ruby/object:Gem::Version
28
+ version: '0.2'
29
+ - - "<"
30
+ - !ruby/object:Gem::Version
31
+ version: '1'
32
+ - !ruby/object:Gem::Dependency
33
+ name: json
34
+ requirement: !ruby/object:Gem::Requirement
35
+ requirements:
36
+ - - ">="
37
+ - !ruby/object:Gem::Version
38
+ version: '2.7'
39
+ - - "<"
40
+ - !ruby/object:Gem::Version
41
+ version: '4'
42
+ type: :runtime
43
+ prerelease: false
44
+ version_requirements: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - ">="
47
+ - !ruby/object:Gem::Version
48
+ version: '2.7'
49
+ - - "<"
50
+ - !ruby/object:Gem::Version
51
+ version: '4'
52
+ - !ruby/object:Gem::Dependency
53
+ name: logger
54
+ requirement: !ruby/object:Gem::Requirement
55
+ requirements:
56
+ - - ">="
57
+ - !ruby/object:Gem::Version
58
+ version: '1.6'
59
+ - - "<"
60
+ - !ruby/object:Gem::Version
61
+ version: '2'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '1.6'
69
+ - - "<"
70
+ - !ruby/object:Gem::Version
71
+ version: '2'
72
+ - !ruby/object:Gem::Dependency
73
+ name: net-http
74
+ requirement: !ruby/object:Gem::Requirement
75
+ requirements:
76
+ - - ">="
77
+ - !ruby/object:Gem::Version
78
+ version: '0.4'
79
+ - - "<"
80
+ - !ruby/object:Gem::Version
81
+ version: '1'
82
+ type: :runtime
83
+ prerelease: false
84
+ version_requirements: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: '0.4'
89
+ - - "<"
90
+ - !ruby/object:Gem::Version
91
+ version: '1'
92
+ - !ruby/object:Gem::Dependency
93
+ name: securerandom
94
+ requirement: !ruby/object:Gem::Requirement
95
+ requirements:
96
+ - - ">="
97
+ - !ruby/object:Gem::Version
98
+ version: '0.3'
99
+ - - "<"
100
+ - !ruby/object:Gem::Version
101
+ version: '1'
102
+ type: :runtime
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ requirements:
106
+ - - ">="
107
+ - !ruby/object:Gem::Version
108
+ version: '0.3'
109
+ - - "<"
110
+ - !ruby/object:Gem::Version
111
+ version: '1'
112
+ description: A Ruby error catcher with optional framework integrations for Hawk.
113
+ email:
114
+ - leonid@svyatov.com
115
+ executables: []
116
+ extensions: []
117
+ extra_rdoc_files: []
118
+ files:
119
+ - CHANGELOG.md
120
+ - LICENSE
121
+ - README.md
122
+ - docs/configuration.md
123
+ - docs/integrations.md
124
+ - docs/releasing.md
125
+ - docs/verification.md
126
+ - lib/hawk.rb
127
+ - lib/hawk/boundary.rb
128
+ - lib/hawk/breadcrumbs.rb
129
+ - lib/hawk/breadcrumbs/logger.rb
130
+ - lib/hawk/breadcrumbs/net_http.rb
131
+ - lib/hawk/breadcrumbs/rails.rb
132
+ - lib/hawk/client.rb
133
+ - lib/hawk/configuration.rb
134
+ - lib/hawk/delayed_job.rb
135
+ - lib/hawk/delivery.rb
136
+ - lib/hawk/diagnostics.rb
137
+ - lib/hawk/event.rb
138
+ - lib/hawk/filter.rb
139
+ - lib/hawk/filtered_fields.rb
140
+ - lib/hawk/framework_filter.rb
141
+ - lib/hawk/hook.rb
142
+ - lib/hawk/job_context.rb
143
+ - lib/hawk/json_value.rb
144
+ - lib/hawk/process_hooks.rb
145
+ - lib/hawk/rack.rb
146
+ - lib/hawk/rack/body.rb
147
+ - lib/hawk/rails.rb
148
+ - lib/hawk/rails/action_cable.rb
149
+ - lib/hawk/rails/active_job.rb
150
+ - lib/hawk/rails/error_subscriber.rb
151
+ - lib/hawk/rails/integration.rb
152
+ - lib/hawk/rails/payload_filter.rb
153
+ - lib/hawk/rake.rb
154
+ - lib/hawk/release.rb
155
+ - lib/hawk/resque.rb
156
+ - lib/hawk/scope.rb
157
+ - lib/hawk/scope_store.rb
158
+ - lib/hawk/sidekiq.rb
159
+ - lib/hawk/source.rb
160
+ - lib/hawk/token.rb
161
+ - lib/hawk/transport.rb
162
+ - lib/hawk/version.rb
163
+ - sig/hawk.rbs
164
+ - sig/hawk/boundary.rbs
165
+ - sig/hawk/breadcrumbs.rbs
166
+ - sig/hawk/breadcrumbs/logger.rbs
167
+ - sig/hawk/breadcrumbs/net_http.rbs
168
+ - sig/hawk/breadcrumbs/rails.rbs
169
+ - sig/hawk/client.rbs
170
+ - sig/hawk/configuration.rbs
171
+ - sig/hawk/delayed_job.rbs
172
+ - sig/hawk/delivery.rbs
173
+ - sig/hawk/diagnostics.rbs
174
+ - sig/hawk/event.rbs
175
+ - sig/hawk/filter.rbs
176
+ - sig/hawk/filtered_fields.rbs
177
+ - sig/hawk/framework_filter.rbs
178
+ - sig/hawk/hook.rbs
179
+ - sig/hawk/job_context.rbs
180
+ - sig/hawk/json_value.rbs
181
+ - sig/hawk/process_hooks.rbs
182
+ - sig/hawk/rack.rbs
183
+ - sig/hawk/rails.rbs
184
+ - sig/hawk/rails/action_cable.rbs
185
+ - sig/hawk/rails/active_job.rbs
186
+ - sig/hawk/rails/error_subscriber.rbs
187
+ - sig/hawk/rails/payload_filter.rbs
188
+ - sig/hawk/rake.rbs
189
+ - sig/hawk/release.rbs
190
+ - sig/hawk/resque.rbs
191
+ - sig/hawk/scope.rbs
192
+ - sig/hawk/scope_store.rbs
193
+ - sig/hawk/sidekiq.rbs
194
+ - sig/hawk/source.rbs
195
+ - sig/hawk/token.rbs
196
+ - sig/hawk/transport.rbs
197
+ homepage: https://hawk.so
198
+ licenses:
199
+ - MIT
200
+ metadata:
201
+ rubygems_mfa_required: 'true'
202
+ source_code_uri: https://github.com/svyatov/hawk.ruby
203
+ bug_tracker_uri: https://github.com/svyatov/hawk.ruby/issues
204
+ changelog_uri: https://github.com/svyatov/hawk.ruby/blob/main/CHANGELOG.md
205
+ documentation_uri: https://github.com/svyatov/hawk.ruby/blob/main/README.md
206
+ rdoc_options: []
207
+ require_paths:
208
+ - lib
209
+ required_ruby_version: !ruby/object:Gem::Requirement
210
+ requirements:
211
+ - - ">="
212
+ - !ruby/object:Gem::Version
213
+ version: '3.3'
214
+ required_rubygems_version: !ruby/object:Gem::Requirement
215
+ requirements:
216
+ - - ">="
217
+ - !ruby/object:Gem::Version
218
+ version: '0'
219
+ requirements: []
220
+ rubygems_version: 4.0.20
221
+ specification_version: 4
222
+ summary: Ruby error reporting for Hawk
223
+ test_files: []