Roda v1.2.0 Release Notes

Release Date: 2014-12-17 // over 9 years ago
    • 0️⃣ Don't override explicit nil :default_encoding template option in the render plugin (jeremyevans)

    • Add remaining_path and matched_path request methods (jeremyevans)

    • Add slash_path_emty plugin, for considering a path of "/" as empty when doing a terminal match (jeremyevans)

    • Remove def_verb_method request class method (jeremyevans)

    • Support :add_script_name, :name, :url, and :url_only options when creating named paths in the path plugin (jeremyevans)

    • ➕ Add match_affix plugin, for overriding default prefix/suffix used in match patterns (jeremyevans)

    • ➕ Add empty_root plugin, for making root matcher also match empty string (jeremyevans)

    • ➕ Add roda_class instance methods to RodaRequest and RodaResponse, to DRY up plugin code (jeremyevans)

    • ➕ Add sinatra_helpers plugin, porting Sinatra::Helpers methods not covered by other plugins (jeremyevans)

    • 0️⃣ Don't set the default headers until the response is finished (jeremyevans)

    • Add RodaRequest#default_redirect_status, so plugins can override the default status used for redirects (jeremyevans)

    • ➕ Add drop_body plugin, for automatically dropping body and Content-{Length,Type} headers based on response status (jeremyevans)

    • ➕ Add clear_middleware! class method, for clearing the current middleware (jeremyevans)

    • ➕ Add inherit_middleware class accessor, allowing users to turn off middleware inheritance (jeremyevans)

    • ➕ Add multi_run plugin, for dispatching to multiple rack applications based on the request path prefix (jeremyevans)

    • ➕ Add environments plugin, for handling development/test/production environments (jeremyevans)

    • 0️⃣ Do not cache templates by default if RACK_ENV is development (jeremyevans)

    • ➕ Add delay_build plugin, to delay building the rack app until Roda.app is called (jeremyevans)

    • Add :user_agent hash matcher to the header_matchers plugin (jeremyevans)

    • 🛠 Fix caching of templates in the render plugin when :opts or :template_class is used (jeremyevans)

    • 0️⃣ Require loading the render plugin again if you want to change the default layout (jeremyevans)

    • Pass :css_opts and :js_opts as template options (via :opts) instead of render options when rendering (jeremyevans)

    • Only pass :opts hash to template class during rendering, instead of all render/view options (jeremyevans)

    • 👌 Support :template_class option in the render plugin for overriding template class to use (jeremyevans)

    • Automatically dup unfrozen Array/Hash opts values when subclassing (jeremyevans)

    • ➕ Add named_templates plugin, for creating inline templates by name, instead of storing them in the file system (jeremyevans)

    • 👌 Support :template option in for render/view to specify template to use, instead of requiring separate argument (jeremyevans)

    • Add class_level_routing plugin, for a DSL similar to Sinatra (jeremyevans)

    • 0️⃣ Make RodaRequest.consume_pattern not capture pattern by default (jeremyevans)

    • Add static_path_info plugin, making Roda not modify PATH_INFO or SCRIPT_NAME during routing (jeremyevans)

    • 🐎 Use local/instance variable lookups instead of method calls to improve performance (jeremyevans)

    • ➕ Add RodaRequest#session, and have #session delegate to that (jeremyevans)

    • ➕ Add delegate plugin, for easily creating methods that delegate to request or response (jeremyevans)

    • ➕ Add mailer plugin, allowing use of a routing tree for email instead of web responses (jeremyevans)