breaker_machines 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.
- checksums.yaml +7 -0
- data/LICENSE.txt +21 -0
- data/README.md +1894 -0
- data/lib/breaker_machines/circuit/callbacks.rb +132 -0
- data/lib/breaker_machines/circuit/configuration.rb +73 -0
- data/lib/breaker_machines/circuit/execution.rb +211 -0
- data/lib/breaker_machines/circuit/introspection.rb +77 -0
- data/lib/breaker_machines/circuit/state_management.rb +105 -0
- data/lib/breaker_machines/circuit.rb +14 -0
- data/lib/breaker_machines/console.rb +345 -0
- data/lib/breaker_machines/dsl.rb +274 -0
- data/lib/breaker_machines/errors.rb +30 -0
- data/lib/breaker_machines/registry.rb +99 -0
- data/lib/breaker_machines/storage/base.rb +47 -0
- data/lib/breaker_machines/storage/bucket_memory.rb +163 -0
- data/lib/breaker_machines/storage/memory.rb +127 -0
- data/lib/breaker_machines/storage/null.rb +45 -0
- data/lib/breaker_machines/storage.rb +8 -0
- data/lib/breaker_machines/version.rb +5 -0
- data/lib/breaker_machines.rb +82 -0
- data/sig/README.md +74 -0
- data/sig/all.rbs +25 -0
- data/sig/breaker_machines/circuit.rbs +154 -0
- data/sig/breaker_machines/console.rbs +32 -0
- data/sig/breaker_machines/dsl.rbs +50 -0
- data/sig/breaker_machines/errors.rbs +24 -0
- data/sig/breaker_machines/interfaces.rbs +46 -0
- data/sig/breaker_machines/registry.rbs +30 -0
- data/sig/breaker_machines/storage.rbs +65 -0
- data/sig/breaker_machines/types.rbs +97 -0
- data/sig/breaker_machines.rbs +30 -0
- data/sig/manifest.yaml +5 -0
- metadata +167 -0
metadata
ADDED
@@ -0,0 +1,167 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: breaker_machines
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Abdelkader Boudih
|
8
|
+
bindir: exe
|
9
|
+
cert_chain: []
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
11
|
+
dependencies:
|
12
|
+
- !ruby/object:Gem::Dependency
|
13
|
+
name: activesupport
|
14
|
+
requirement: !ruby/object:Gem::Requirement
|
15
|
+
requirements:
|
16
|
+
- - ">="
|
17
|
+
- !ruby/object:Gem::Version
|
18
|
+
version: '8.0'
|
19
|
+
type: :runtime
|
20
|
+
prerelease: false
|
21
|
+
version_requirements: !ruby/object:Gem::Requirement
|
22
|
+
requirements:
|
23
|
+
- - ">="
|
24
|
+
- !ruby/object:Gem::Version
|
25
|
+
version: '8.0'
|
26
|
+
- !ruby/object:Gem::Dependency
|
27
|
+
name: concurrent-ruby
|
28
|
+
requirement: !ruby/object:Gem::Requirement
|
29
|
+
requirements:
|
30
|
+
- - "~>"
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '1.3'
|
33
|
+
type: :runtime
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- - "~>"
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: '1.3'
|
40
|
+
- !ruby/object:Gem::Dependency
|
41
|
+
name: state_machines
|
42
|
+
requirement: !ruby/object:Gem::Requirement
|
43
|
+
requirements:
|
44
|
+
- - ">="
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: 0.31.0
|
47
|
+
type: :runtime
|
48
|
+
prerelease: false
|
49
|
+
version_requirements: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - ">="
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: 0.31.0
|
54
|
+
- !ruby/object:Gem::Dependency
|
55
|
+
name: zeitwerk
|
56
|
+
requirement: !ruby/object:Gem::Requirement
|
57
|
+
requirements:
|
58
|
+
- - "~>"
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: '2.7'
|
61
|
+
type: :runtime
|
62
|
+
prerelease: false
|
63
|
+
version_requirements: !ruby/object:Gem::Requirement
|
64
|
+
requirements:
|
65
|
+
- - "~>"
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
version: '2.7'
|
68
|
+
- !ruby/object:Gem::Dependency
|
69
|
+
name: minitest
|
70
|
+
requirement: !ruby/object:Gem::Requirement
|
71
|
+
requirements:
|
72
|
+
- - "~>"
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
version: '5.16'
|
75
|
+
type: :development
|
76
|
+
prerelease: false
|
77
|
+
version_requirements: !ruby/object:Gem::Requirement
|
78
|
+
requirements:
|
79
|
+
- - "~>"
|
80
|
+
- !ruby/object:Gem::Version
|
81
|
+
version: '5.16'
|
82
|
+
- !ruby/object:Gem::Dependency
|
83
|
+
name: rake
|
84
|
+
requirement: !ruby/object:Gem::Requirement
|
85
|
+
requirements:
|
86
|
+
- - "~>"
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
version: '13.0'
|
89
|
+
type: :development
|
90
|
+
prerelease: false
|
91
|
+
version_requirements: !ruby/object:Gem::Requirement
|
92
|
+
requirements:
|
93
|
+
- - "~>"
|
94
|
+
- !ruby/object:Gem::Version
|
95
|
+
version: '13.0'
|
96
|
+
description: |
|
97
|
+
BreakerMachines is a production-ready circuit breaker implementation for Ruby that prevents
|
98
|
+
cascade failures in distributed systems. Built on the battle-tested state_machines gem, it
|
99
|
+
provides a clean DSL, thread-safe operations, multiple storage backends, and comprehensive
|
100
|
+
introspection tools. Unlike other solutions, BreakerMachines prioritizes safety by avoiding
|
101
|
+
dangerous forceful timeouts while supporting fallback chains, jitter, and event callbacks.
|
102
|
+
email:
|
103
|
+
- terminale@gmail.com
|
104
|
+
executables: []
|
105
|
+
extensions: []
|
106
|
+
extra_rdoc_files: []
|
107
|
+
files:
|
108
|
+
- LICENSE.txt
|
109
|
+
- README.md
|
110
|
+
- lib/breaker_machines.rb
|
111
|
+
- lib/breaker_machines/circuit.rb
|
112
|
+
- lib/breaker_machines/circuit/callbacks.rb
|
113
|
+
- lib/breaker_machines/circuit/configuration.rb
|
114
|
+
- lib/breaker_machines/circuit/execution.rb
|
115
|
+
- lib/breaker_machines/circuit/introspection.rb
|
116
|
+
- lib/breaker_machines/circuit/state_management.rb
|
117
|
+
- lib/breaker_machines/console.rb
|
118
|
+
- lib/breaker_machines/dsl.rb
|
119
|
+
- lib/breaker_machines/errors.rb
|
120
|
+
- lib/breaker_machines/registry.rb
|
121
|
+
- lib/breaker_machines/storage.rb
|
122
|
+
- lib/breaker_machines/storage/base.rb
|
123
|
+
- lib/breaker_machines/storage/bucket_memory.rb
|
124
|
+
- lib/breaker_machines/storage/memory.rb
|
125
|
+
- lib/breaker_machines/storage/null.rb
|
126
|
+
- lib/breaker_machines/version.rb
|
127
|
+
- sig/README.md
|
128
|
+
- sig/all.rbs
|
129
|
+
- sig/breaker_machines.rbs
|
130
|
+
- sig/breaker_machines/circuit.rbs
|
131
|
+
- sig/breaker_machines/console.rbs
|
132
|
+
- sig/breaker_machines/dsl.rbs
|
133
|
+
- sig/breaker_machines/errors.rbs
|
134
|
+
- sig/breaker_machines/interfaces.rbs
|
135
|
+
- sig/breaker_machines/registry.rbs
|
136
|
+
- sig/breaker_machines/storage.rbs
|
137
|
+
- sig/breaker_machines/types.rbs
|
138
|
+
- sig/manifest.yaml
|
139
|
+
homepage: https://github.com/seuros/breaker_machines
|
140
|
+
licenses:
|
141
|
+
- MIT
|
142
|
+
metadata:
|
143
|
+
allowed_push_host: https://rubygems.org
|
144
|
+
homepage_uri: https://github.com/seuros/breaker_machines
|
145
|
+
source_code_uri: https://github.com/seuros/breaker_machines
|
146
|
+
bug_tracker_uri: https://github.com/seuros/breaker_machines/issues
|
147
|
+
documentation_uri: https://github.com/seuros/breaker_machines#readme
|
148
|
+
rubygems_mfa_required: 'true'
|
149
|
+
rdoc_options: []
|
150
|
+
require_paths:
|
151
|
+
- lib
|
152
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
153
|
+
requirements:
|
154
|
+
- - ">="
|
155
|
+
- !ruby/object:Gem::Version
|
156
|
+
version: 3.2.0
|
157
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
158
|
+
requirements:
|
159
|
+
- - ">="
|
160
|
+
- !ruby/object:Gem::Version
|
161
|
+
version: '0'
|
162
|
+
requirements: []
|
163
|
+
rubygems_version: 3.6.9
|
164
|
+
specification_version: 4
|
165
|
+
summary: Circuit breaker implementation for Ruby with a clean DSL and state_machines
|
166
|
+
under the hood
|
167
|
+
test_files: []
|