Praxis v0.10.0 Release Notes
-
- Avoid loading responses (and templates) lazily as they need to be registered in time
- ๐ Fix: app generator's handling of 404. @magneland Issue #10
- ๐ Fix: Getting started doc. @WilliamSnyders Issue #19
- Controller filters can now shortcut the request lifecycle flow by returning a
Response
:- If a before filter returns it, both the action and the after filters will be skipped (as well as any remaining filters in the before list)
- If an after filter returns it, any remaining after filters in the block will be skipped.
- There is no way for the action result to skip the :after filters.
- ๐จ Refactored Controller module to properly used ActiveSupprt concerns. @jasonayre Issue #26
- Separated the controller module into a Controller concern and a separable Callbacks concern
- Controller filters (i.e. callbacks) can shortcut request lifecycle by returning a Response object:
- If a before filter returns it, both the action and the after filters will be skipped (as well as any remaining before filters)
- If an after filter returns it, any remaining after filters in the block will be skipped.
- There is no way for the action result to skip the :after filters.
- Fixes Issue #21
- Introduced
around
filters using blocks: * Around filters can be set wrapping any of the request stages (load, validate, action...) and might apply to only certain actions (i.e. exactly the same as the before/after filters)- Therefore they supports the same attributes as
before
andafter
filters. The only difference is that an around filter block will get an extra parameter with the block to call to continue the chain. * See the Instances controller for examples.
- Therefore they supports the same attributes as
- ๐ Fix: Change :created response template to take an optiona โlocationโ parameter (instead of a media_type one, since it doesnโt make sense for a 201 type response) Issue #26
- ๐ Make the system be more robust in error reporting when controllers do not return a String or a Response
- ๐ Fix: ValidationError not setting a Content-Type header. Issue #39
- ๐ Relaxed ActiveSupport version dependency (from 4 to >=3 )
- ๐ Fix: InternalServerError not setting a Content-Type header. Issue #42
- ๐ป A few document browser improvements: _ Avoid showing certain internal type options (i.e. reference). _ Fixed type label cide to detect collections better, and differentiate between Attributor ones and MediaType ones. _ Tweaked _example.html template to be much more collapsed by default, as it is not great, but makes it easier to review. _ Enhanced _links.html template to use the rs-type-label, and rs-attribute-description directives. * Small design improvements on the home page for showing routes and verbs more prominently.
- ๐ Mediatype documentation improvements:
_ Make
Links
always list its attributes when describe (never shallow) _ refactored MediaTypeCollection to store a member_attribute (instead of a member_type), and report it in describe much like attributor collections do. MediaTypeCollection
. See [volume_snapshot](spec/spec_app/design/media_types/volume_snapshot.rb) in the specs for an example.- Added
member_view
DSL to define a view that renders the collection's members with the given view.
- Change: Now requires all views to be explicitly defined (and will not automatically use the underlying member view if it exists). To define a view for member element (wrapping it in a collection) one can use the new member_view.
- Added