Releases: rage-rb/rage
v1.20.0
Rage v1.20 continues its observability journey and introduces Rage::Telemetry - a built-in telemetry system that lets developers observe and measure what's happening inside the application.
The first user of Rage::Telemetry is the official OpenTelemetry integration to be released and available in the following weeks.
Other changes include:
- Add
Response#statusmethod for direct status code access - Expose metadata inside deferred tasks
- Introduce middleware system for deferred tasks
- Ensure compatibility with
Rack::Events
Learn more: https://rage-rb.dev/docs/telemetry
v1.19.0
Rage v1.19 brings the first wave of observability improvements, starting with enhanced logging capabilities:
- Global Log Context - Add dynamic data to all log entries in a centralized way
- External Loggers - Connect
Rage.loggerdirectly to external observability platforms - Enhanced Deferred Logging - Deferred tasks now have access to complete log context, not just request IDs
Learn more: https://rage-rb.dev/docs/logging
Full Changelog: v1.18.0...v1.19.0
v1.18.0
What's Changed
Added
Rage now includes a lightweight pub/sub event system for building decoupled, event-driven applications.
Key Features:
- Define events using Ruby's Data class
- Subscribe to parent classes or modules to handle multiple related events
- Run subscribers in the background with automatic retries
- Visualize event-subscriber relationships
https://rage-rb.dev/docs/event-system
Fixed
Fixed Fiber.await to correctly handle multiple sequential calls.
Full Changelog: v1.17.1...v1.18.0
v1.17.0
Rage v1.17 introduces Rage::Deferred, an in-process background job queue that offloads long-running tasks from the request pipeline, improving client response times. Key features include:
- Data Durability: A disk-based write-ahead log ensures task replay after server restarts or crashes.
- Automatic Retries: Tasks are retried up to 5 times with exponential backoff on failure.
- Backpressure: Prevents uncontrolled queue growth by blocking new tasks when the queue exceeds a limit.
Rage::Deferred is ideal for tasks like communicating with other services, sending emails, or syncing data. Check out the guide for all the details.
Other Changes
- Update
stale?to set cache headers by @serhii-sadovskyi in #159 - Controllers generator by @alex-rogachev in #160
- Pause on sub-second sleeps by @rsamoilov in #161
Full Changelog: v1.16.0...v1.17.0
v1.16.0
What's Changed
Rage v1.16 introduces a new WebSocket protocol - RawWebSocketJson. This protocol enables you to interact with Rage::Cable applications using the native WebSocket object, eliminating the need for the @rails/actioncable dependency.
Other changes:
- Feature: Added the
after_initializehook by @serhii-sadovskyi in #149 - [OpenAPI] Correctly handle the
keyoption in associations - [OpenAPI] Correctly handle
root_key! - Correctly parse plaintext responses in RSpec
New Contributors
- @serhii-sadovskyi made their first contribution in #149
Full Changelog: v1.15.1...v1.16.0
v1.15.0
What's Changed
With v1.15, Rage introduces OpenAPI Explorer - a tool that allows you to experiment with Rage::OpenAPI without the need to set up a project. You can try out different tags and serializer combinations to see the documentation generated by Rage::OpenAPI.
Additionally, the release includes some new functionality and numerous bug fixes.
Added
- Enhance the
Rage::Requestclass by @aaoafk - [OpenAPI] Support the
@paramtag
Fixed
- Fix using
Fiber.schedulein console by @lkibbalam - Correctly handle regexp origins in
Rage::Cors - [OpenAPI] Correctly handle trailing slash
- [OpenAPI] Correctly handle empty shared components
- [OpenAPI] Explicitly load Prism
- [OpenAPI] Correctly verify available before actions
- [OpenAPI] Correctly handle global comments
Shoutouts
Thank you to @RichStone for his idea of the OpenAPI Explorer tool, as well as for his feedback and advice on how to improve Rage::OpenAPI.
New Contributors
- @aaoafk made their first contribution in #123
- @lkibbalam made their first contribution in #143
Full Changelog: v1.14.0...v1.15.0
v1.14.0
What's Changed
- Update app template to include all app rake tasks by @pjb3 in #130
- Reload code in development based on filesystem updates by @rsamoilov in #132
New Contributors
Full Changelog: v1.13.0...v1.14.0
v1.13.0
What's Changed
- [CLI] Support the PORT ENV variable by @TheBlackArroVV in #124
- Add the RequestId middleware in #127
- Correctly handle persistent HTTP connections in #128
- [Cable] Improve the time to connect in #129
Shoutouts
Special thanks to @p8 for tackling the Ruby 3.4 + Rage bug!
New Contributors
- @TheBlackArroVV made their first contribution in #124
Full Changelog: v1.12.0...v1.13.0
v1.12.0
What's Changed
- [Cable] Added Redis adapter, which now allows you to scale
Rage::Cableapplications to more than one server. The adapter is based on Redis Streams, which means clients do not lose messages during network disruptions. As before, an adapter is not needed if you only use one server. This means that even if Redis is down due to an outage, clients connected to the same server as the broadcaster will still receive broadcasts. - [API] Added long-awaited
around_actionhooks. - [OpenAPI] Added global response tags, which can be used to specify global responses shared by multiple endpoints.
Full Changelog: v1.11.0...v1.12.0
v1.11.0
What's Changed
If you still haven’t had enough reasons to use Rage, here’s one more - v1.11 now lets you build OpenAPI specifications for your applications!
We’ve worked hard on implementing this feature and even harder on scoping it out. And with features like automatic security scheme application based on before_action callbacks and integration with the awesome Alba, we couldn’t be happier with the result!
So, check out the guide and don’t forget to share your feedback!
Another important update in this release:
Rage now correctly handles ActiveRecord connections in the environments with legacy_connection_handling == false.
Full Changelog: v1.10.1...v1.11.0