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 and after 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.
    • ๐Ÿ›  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.