Praxis v2.0.pre.1 Release Notes

Release Date: 2020-02-22 // over 4 years ago
    • 🚚 Bring over partial functionality from praxis-mapper and remove dependency on same
      • Praxis::Mapper's ::Resource and ::SelectorGenerator are now included
    • General cleanup and simplification

Previous changes from v0.21

    • Protect against MediaTypes that do not have any links defined.
    • 📄 More robust scanning of existing types when generating docs. Some types might have not been properly reported in the schemas section of the JSON docs if they were only used somewhere deep in some other type or action hierarchy
    • 🏗 Build doc browser support for defining top-level home pages for types. Apps can achieve the override by registering templates that respond to the ‘main’ type (instead of the other existing ‘label’,’embedded’ and ‘standalone’ modes).
    • ✨ Enhance doc browser to show header and location expectations on action responses that have them defined
    • 👍 Allow Plugin registration without requiring config_key
      • registration will select a default config_key based on the class name
    • 📚 A new documentation_url global directive is exposed for authors to be able to indicate where documentation will be hosted.
      • If this is provided, the default validation handler will add a documentation key to the response pointing at a url that should correspond to the documentation for the resource the user was requesting.
      • Praxis::Docs::LinkBuilder can be used to generate these documentation urls from the praxis application.
    • 💅 You can now switch your doc browser to use HTML5 style urls (i.e. /1.0/type/V1-MediaTypes-PriceFilter instead of /index.html#/1.0/type/V1-MediaTypes-PriceFilter).
    • ✂ Remove deprecated rake tasks.
    • ✂ Remove some remaining inline styling in doc browser.
    • ➕ Adds a ExampleProvider.removeHandlersForKey call. You can use ExampleProvider.removeHandlersForKey('general') to get rid of the default example if required.
    • 🛰 Make Traits accumulate block definitions for params,headers and payload rather than overriding them.
    • Switch to lazy evaluation of base_params from ApiDefinition to properly inherit them into the resources and their corresponding actions even before the application's MediaTtypes have been finalized.
    • Built the MiddlewareApp class to make it easy to run a Praxis app mounted as an intercepting middleware which will only forward requests down the stack if they didn't match any of its routes.
      • Note: it properly skips forwarding when 404s are purposedly returned by the application itself.
      • Note2: it also respects the X-Cascade=pass conventions.