Show HN: BreakerMachines – Modern Circuit Breaker for Rails with Async Support (github.com)
BreakerMachines is a production-ready circuit breaker for Ruby/Rails with built-in async/fiber support, fallback chains, and rich monitoring. Unlike existing gems, it handles modern Ruby's fiber scheduler and avoids dangerous thread timeouts.
8 comments
[ 3.4 ms ] story [ 24.8 ms ] threadKey features that set it apart:
- True async/fiber support (works with Falcon, async gems)
- Built-in fallback mechanism with chaining
- Thread-safe without dangerous Timeout.timeout
- Memory-efficient with WeakRef tracking
- Rich introspection and monitoring hooks
- Clean DSL that works with inheritance
With everyone adding AI/LLM APIs to their apps, circuit breakers are more critical than ever.
These APIs can be slow, flaky, or have outages - without protection, your app goes down with them.
The README shows patterns for graceful degradation when a service is down.
I explicitly avoided shipping Redis/DB adapters to keep it focused, the README shows how to implement your own in ~20 lines.
Would love feedback on the API design and any edge cases I might have missed!
I'm still going to add the parallel feature, i removed it because i need to test it in CI.
I'd suggest to drop the DSL, at the end of the day, a good old class with a constructor stored in a constant is much more more transparent:
Just my 2 cents though.I’m not saying your gem is bad. It’s nice to se an attempt at a circuit breaker that is based on the state machines gem, I will certainly look into the actual code if I have a need for it in the future.
Just wanted to give you this bit of feedback about maybe cutting down on length and loosing the ai images in the readme as I think it might be a turnoff for others as well.
PS: Speaking of "bit of feedback" for the parent commenter, it's losing not loosing.
I think it's a massive improvement that it's been broken down into chapters in a docs folder. I can take or leave the writing style but do miss the old whimsy of _why and his poignant guide to ruby. The examples are great and quite thorough.
JFC, whatever happened to "Matz is nice, so we are nice"?