- [SSE] Ensure connection is closed for single-value SSE streams by @jsxs0 (#264).
- Ensure task ID seed is always greater than timestamps in existing WAL files by @Abishekcs (#255)
- Correctly load routes in Rails apps (#249).
- [SSE] Ensure connection is closed when raw SSE stream raises by @jsxs0 (#248).
- [OpenAPI] Alba parser: silent fallback for unresolvable association resources by @pratyush07-hub (#258).
- Fix
Rage::UploadedFile#close(#262).
- [SSE] Add tests for log context propagation across fiber boundaries by @jsxs0 (#267).
- Add singular
resourcerouting with plural controller mapping and document the helper by @anuj-pal27 (#247). - [SSE] Add support for unbounded streams (#266).
- [OpenAPI] Support OpenAPI generation for file parameters by @Digvijay-x1 (#229).
- [Deferred] Add configurable retry options by @Digvijay-x1 (#225).
- [SSE] Add unit tests for
SSE::ConnectionProxyby @jsxs0 (#245). - Custom renderer support by @anuj-pal27 (#244).
- [SSE] Add graceful shutdown support for SSE streams by @tmchow (#261).
- Add singular resource routing by @anuj-pal27 (#247).
- Only parse request body as multipart if the request is multipart by p8 (#256).
- [Deferred] Support configurable retry options with
max_retriesandretry_intervalby @Digvijay (#215). - [Cable] Add support for
stop_stream_fromandstop_stream_forby @Digvijay (#217). - Add support for signed cookies by @rfronczyk (#226).
- [OpenAPI] Add support for shared components in
@authtags by @Piyush-Goenka (#221). - Add support for server-sent events (#220).
- Fix duplicate Rake tasks (#238).
- Improve styling for the
skillsCLI (#223).
- [Cable] Add RSpec test helpers (#210).
- [Cable] Add support for
stream_for/broadcast_to(#207). - Add
skillsCLI (#218). - Support inline context for
Rage::Logger(#206).
- Ensure correct log context isolation for intersecting fibers (#205).
- Ensure Cable middleware don't duplicate when mounted in routes (#202).
- Documentation updates by @cuneyter (#200).
- Rely on
Rack::Sessionfor mounted apps (#201).
- Ensure configuration is built correctly inside the
after_initializehooks (#208).
- Add
Rage::Telemetry(#186). - Add the
Response#statusmethod. (#191). - [Deferred] Expose deferred metadata (#188).
- [Deferred] Support deferred middleware (#184).
- Ensure compatibility with
Rack::Events(#180).
- Refactor the implementation of
rescue_frominRage::Events(#185).
- Compatibility with Rack 3 (#193).
- Use app-specific cookie keys for sessions (#189).
- Add ability to specify external loggers (#178).
- Pass all of log data to deferred tasks (#173).
- Add the
Request#route_uri_patternmethod (#175). - Support global log tags and context (#171, #177).
- Fix reloading in dev with user-level fibers (#170).
- Add
Rage::Events(#167).
- Fix sequential
Fiber.awaitcalls (#168).
- Apply backpressure to every
enqueuecall (#166).
- Add
Rage::Deferred(#164). - Add a controller generator by @alex-rogachev (#160).
- Update
stale?to set cache headers by @serhii-sadovskyi (#159).
- Sub-millisecond sleep results in hang (#161).
- [Cable] Add the
RawJSONprotocol (#150). - Add the
after_initializehook by @serhii-sadovskyi (#149).
- Correctly parse plaintext responses in RSpec (#151).
- [OpenAPI] Correctly handle
root_key!(#148). - [OpenAPI] Correctly handle the
keyoption in associations (#147).
- [Cable] Create a subscription only when the reactor is started (#146).
- Enhance the
Rage::Requestclass by @aaoafk (#123). - [OpenAPI] Support the
@paramtag (#134).
- Fix using
Fiber.schedulein console by @lkibbalam (#143). - Correctly handle regexp origins in
Rage::Cors(#138). - [OpenAPI] Correctly handle trailing slash (#141).
- [OpenAPI] Correctly handle empty shared components (#139).
- [OpenAPI] Explicitly load Prism (#136).
- [OpenAPI] Correctly verify available before actions (#144).
- [OpenAPI] Correctly handle global comments (#140).
- Detect file updates in development (#132).
- Update app template to include all app rake tasks by pjb3 (#130).
- [CLI] Support the PORT ENV variable by @TheBlackArroVV (#124).
- Add the
RequestIdmiddleware (#127).
- Correctly process persistent HTTP connections (#128).
- [OpenAPI] Ignore empty comments (#126).
- [Cable] Improve the time to connect (#129).
- Add Redis adapter (#114).
- Add global response tags (#110).
- Implement around_action callbacks (#107).
- Support date types in Alba serializers (#112).
Rage::OpenAPI(#109).
- Correctly handle ActiveRecord connections in the environments with
legacy_connection_handling == false(#108).
- Patch AR pool even if
Rakeis defined (#105).
- Enable Rage Connection Pool by default (#103).
- Allow to preconfigure the app for selected database (#104).
- Add
versionandmiddlewareCLI commands (#99).
- Static file server (#100).
- Rails 7.2 compatibility (#101).
- Correctly set Rails env (#102).
- Support WebSockets (#88).
- Support
wrap_parametersby @alex-rogachev (#89). - Unknown environment error handling by @cuneyter (#95).
- Allow
rescue_fromhandlers to not accept arguments (#93).
- Support legacy route helpers (#90).
- Correctly handle internal Rails routes in
Rage.multi_application(#91).
- Correctly reload code in multi apps (#87).
- Allow to have both Rails and Rage controllers in one application (#83).
- Add
authenticate_or_request_with_http_token(#85). - Add the
memberandcontrollerroute helpers (#86).
- Deprecate
Rage.load_middlewares(#83).
- Correctly init console in Rails mode (credit to efibootmgr) (#84).
- Support cookies and sessions (#69).
- Improve compatibility with ActiveRecord 7.1 (#80).
- Introduce the
ActiveRecord::ConnectionPoolpatch (#78).
- Correctly determine Rage env (#77).
- Correctly clone Rails logger (#76).
- Disable Ruby buffer for logging IO (#73).
- Default to 1 worker in development (#74).
- Default to use ActionDispatch::Reloader in dev env in Rails mode (#75).
- Change the way controller names are logged (#72).
- Use formatters in console (#71).
- Fix Fiber.await behavior in RSpec (#70).
- RSpec integration (#60).
- Add DNS cache (#65).
- Allow to disable the
FiberScheduler#io_writehook (#63).
- Preload fiber ID (#62).
- Release ActiveRecord connections on yield (#66).
- Logger fixes (#64).
- Fix publish calls in cluster mode (#67).
- Add conditional GET using
stale?by @tonekk (#55). - Add Rails integration (#57).
- Add JSON log formatter (#59).
- Implement after actions (#53).
- Zeitwerk autoloading and reloading by @alex-rogachev (#54).
- Support the
environment,binding,timeout, andmax_clientsoptions when usingrage s(#52). - Add CORS middleware (#49).
- Prevent
blockandsleepchannels from conflicting (#51).
- Add env class (#43).
- Schedule request Fibers in a separate middleware (#48).
- Fix logging inside detached fibers (#41).
- Allow to configure the logger as
nil(#42).
- Add sessions for compatibility with
Sidekiq::Web(#35). - Add logger (#33).
- Fixes for
FiberScheduler#io_waitandFiberScheduler#io_read(#32). - Correctly handle exceptions in inner fibers (#34).
- Fixes for
FiberScheduler#kernel_sleep(#36).
- Use config namespaces (#25).
- Update
Fiber.awaitsignature (#36).
- Expose the
paramsobject (#23). - Support header authentication with
authenticate_with_http_token(#21). - Add the
resourcesroute helper (#20). - Add the
namespaceroute helper by @arikarim (#17). - Add the
mountandmatchroute helpers by @arikarim (#18) (#14). - Allow to access request headers by @arikarim (#15).
- Support custom ports when starting the app with
rage s.
- CLI
routestask by @arikarim (#9). - CLI
consoletask (#12). :ifand:unlessoptions inbefore_action(#10).- Allow to set response headers (#11).
- Block version of
before_actionby @heysyam99 (#8).
- Gem configuration by env.
- Add
skip_before_action. - Add
rescue_from. - Add
Fiber.await. - Support the
defaultsroute option.
- Ignore trailing slashes in the URLs.
- Support constraints in routes with optional params.
- Make the
rootroutes helper work correctly with scopes. - Convert objects to string when rendering text.
- Initial release
- Add console utility to generate new apps and start up the server.
- Implement base API controller:
- support
before_actionwith theonlyandexceptoptions; - support
renderwith thejson,plainandstatusoptions; - support the
headmethod;
- support
- Implement router:
- support the
root,get,post,patch,put,deletemethods; - support the
scopemethod with thepathandmoduleoptions; - support
hostconstraint;
- support the