All Versions
88
Latest Version
Avg Release Cycle
29 days
Latest Release
51 days ago

Changelog History
Page 9

  • v2.2.0 Changes

    April 13, 2015
    • ➕ Add :escaper render plugin option to support custom escaping of <%= %> tags when :escape is used (jeremyevans)

    • Add :escape_safe_classes render plugin option, to not escape certain string subclasses when :escape is used (jeremyevans)

    • 🔌 Split partials method from padrino_render plugin into partials plugin (kematzy) (#19)

    • ➕ Add shared_vars plugin, for sharing variables between multiple Roda apps (jeremyevans)

    • ➕ Add delay method to chunked plugin, for delaying a block execution until right before content template rendering (jeremyevans)

    • 0️⃣ Have default Content-Type header when using the default_headers plugin (jeremyevans)

    • ➕ Add :by_name option to the path plugin, for registering classes by name, useful when reloading code (jeremyevans)

    • ➕ Add Roda.path_block to get the block related to the given class used for Road#path (jeremyevans)

    • 👉 Make Roda#path work correctly in subclasses (jeremyevans)

  • v2.1.0 Changes

    March 13, 2015
    • 🔌 Have add_file in the mailer plugin support blocks, which are called after the file has been added (jeremyevans)

    • Add append_view_subdir to view_options, for appending to an existing view subdirectory (jeremyevans)

    • 🔌 Rename view_subdirs plugin to view_options, add support for branch/route specific view/layout options/locals (jeremyevans)

    • 🔀 Merge :locals set in the render plugin options into :locals provided in call to view/render (jeremyevans)

    • ➕ Add support for registering classes in the path plugin for use with Roda#path (jeremyevans)

    • Use :add_script_name app option as default for path method :add_script_name option in path plugin (jeremyevans)

    • Support :add_script_name app option in assets plugin, to prefix URLs with SCRIPT_NAME (jeremyevans)

    • Make r.multi_route in multi_route plugin work without any named routes defined (jeremyevans)

    • ➕ Add :static plugin, for more easily serving static files (jeremyevans)

    • 🍱 Recognize Roda :root option in render and assets plugins (jeremyevans)

    • 🔌 Make :layout=>false option in render plugin override previous layout template (jeremyevans)

    • 🔌 Make add_file in the mailer plugin add the files after the email body instead of before (jeremyevans)

  • v2.0.0 Changes

    February 13, 2015
    • 👍 Allow Roda app to be used as a regular rack app even when using the middleware plugin (jeremyevans)

    • 🔌 Make render plugin :layout option always be true or false (jeremyevans)

    • 0️⃣ Make :layout=>true view option use the default layout (jeremyevans)

    • 🔌 Make error_handler plugin rescue ScriptError in addition to StandardError (jeremyevans)

    • 🔌 Make halt plugin integrate with symbol_views, json, and similar plugins (jeremyevans)

    • ➕ Add padrino_render plugin, adding render/partial methods that work similar to Padrino (jeremyevans)

    • ➕ Add Roda#render_template private method for template rendering, for use by plugins (jeremyevans)

    • 🚚 Make Roda#initialize take env hash, #call take route_block, remove private #_route (jeremyevans)

    • Remove keep_remaining_path/update_remaining_path private request methods (jeremyevans)

    • Don't modify SCRIPT_NAME/PATH_INFO during routing, merging static_path_info plugin into core (jeremyevans)

    • ✂ Remove code deprecated in Roda 1.3.0 (jeremyevans)

  • v1.3.0 Changes

    January 13, 2015
    • Make static_path_info plugin restore original SCRIPT_NAME/PATH_INFO before returning from r.run (jeremyevans)

    • ➕ Add RodaMajorVersion, RodaMinorVersion, and RodaPatchVersion (jeremyevans)

    • Add delete_empty_headers plugin for deleting response headers that are empty before return response (jeremyevans)

    • 👉 Make freeze class method freeze internal data structures to avoid thread safety issues (jeremyevans)

    • Deprecate mutating plugin option hashes for chunked, default_headers, error_email, json, and render plugins (jeremyevans)

    • ⚙ Fix subclassing app and using r.multi_run in subclass in multi_run plugin (jeremyevans)

    • 👌 Support :classes option in json plugin to set the classes to use (jeremyevans)

    • 👌 Improve performance in default_headers plugin by not duping the headers (jeremyevans)

    • 🔌 Use :template_opts instead of :opts for providing options to the template in the render plugin (jeremyevans)

    • Support :match_header_yield Roda option in the header_matchers plugin, causing the :header match to yield the value (jeremyevans)

    • 🚚 Move :param and :param! hash matchers to the param_matchers plugin (jeremyevans)

    • ➕ Add path_matchers plugin, for :extension, :prefix, and :suffix hash matchers (jeremyevans)

    • Move Roda.hash_matcher to hash_matcher plugin (jeremyevans)

    • Move Roda.request_module and .response_module to module_include plugin (jeremyevans)

    • Move RodaResponse#set_cookie and #delete_cookie to cookies plugin (jeremyevans)

    • Deprecate RodaRequest#full_path_info, use #path instead (jeremyevans)

    • ➕ Add class_delegate to the delegate plugin (jeremyevans)

    • 🔌 Make not_found plugin clear headers for response if it is not found (jeremyevans)

    • 🔌 Make error_handler plugin use a new response instead of reusing existing response (jeremyevans)

    • 👉 Make RodaResponse a subclass of Object instead of Rack::Response (jeremyevans)

  • v1.2.0 Changes

    December 17, 2014
    • 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)

  • v1.1.0 Changes

    November 11, 2014
    • ➕ Add assets plugin, for rendering assets on the fly, or compiling them to a single compressed file (cj, jeremyevans) (#5)

    • 🔌 Make InstanceMethods in plugins not include constants, as they would pollute the constant namespace (jeremyevans)

    • 👉 Make response.finish add the Content-Length header, not response.write (jeremyevans)

    • Add response.finish_with_body to override response body used (jeremyevans)

    • 👉 Use allocate instead of new in rack app (jeremyevans)

    • ➕ Add chunked plugin, for easy streaming of template responses using Transfer-Encoding: chunked (jeremyevans)

    • ➕ Add namespace support to the multi_route plugin, to support more complex applications (jeremyevans)

    • 👉 Make r.multi_route use named route return value if not passed a block (jeremyevans)

    • 👉 Make r.multi_route prefer longer route if multiple routes have the same prefix (jeremyevans)

    • ➕ Add caching plugin, for handling http caching (jeremyevans)

    • 👌 Support adding middleware after the route block has been added (jeremyevans)

    • 👍 Allow Roda subclasses to use route block from superclass (jeremyevans)

    • Have r.multi_route ignore non-String named routes (jeremyevans)

    • 🔌 Pick up newly added named routes while running in the multi_route plugin, useful for development (jeremyevans)

    • ➕ Add path plugin, for named path support (jeremyevans) (#4)

    • ➕ Add error_email plugin, for easily emailing an error notification for an exception (jeremyevans)

  • v1.0.0 Changes

    August 19, 2014
    • Don't have :extension hash matcher force a terminal match (jeremyevans)

    • ➕ Add :content option to view method in render plugin to use given content instead of rendering a template (jeremyevans)

    • ➕ Add :escape option to render plugin for using erb templates where <%= %> escapes and <%== %> does not (jeremyevans)

    • 🔌 Make multi_route plugin route("route_name") method a request method instead of an instance method (jeremyevans)

    • Add r.multi_route method to multi_route plugin, for dispatching to named route based on first segment in path (jeremyevans)

    • 👍 Allow non-GET requests to use r.redirect with no argument, redirecting to current path (jeremyevans)

    • ➕ Add head plugin, for handling HEAD requests like GET requests with an empty body (jeremyevans)

    • ⚡️ Optimize consuming patterns by using a positive lookahead assertion (jeremyevans)

    • ➕ Add not_allowed plugin, for automatically returning 405 Method Not Allowed responses (jeremyevans)

    • ⚡️ Optimize match blocks with no arguments (jeremyevans)

    • ➕ Add content_for plugin, for storing content in one template and retrieving it in another (jeremyevans)

    • ➕ Add render_each plugin, for rendering a template for each value in an enumerable (jeremyevans)

    • ➕ Add backtracking_array plugin, allowing array matchers to backtrack if later matchers do not match (jeremyevans)

    • ➕ Add :all hash matcher, allowing array matchers to include conditions where you want to match multiple conditions (jeremyevans)

    • ➕ Add json plugin, allowing match blocks to return arrays/hashes, returning JSON (jeremyevans)

    • ➕ Add view_subdirs plugin, for setting a subdirectory for views on a per-request basis (jeremyevans)

    • 👍 Allow default halt method to take no arguments, and use the current response (jeremyevans)

    • ➕ Add symbol_views plugin, allowing match blocks to return a template name symbol (jeremyevans)

    • Add per_thread_caching plugin, for using separate caches per thread instead of shared thread-safe caches (jeremyevans)

    • ➕ Add hash_matcher class method, for easily creating hash match methods (jeremyevans)

    • ➕ Add symbol_matchers plugin, for using symbol-specific matching regexps (jeremyevans)

    • ➕ Add csrf plugin for csrf protection using rack_csrf (jeremyevans)

    • ⚡️ Optimize r.is, r.get, r.post and similar methods by reducing the number of Array objects created (jeremyevans)

    • 👌 Support RequestClassMethods and ResponseClassMethods in plugins (jeremyevans)

    • ➕ Add Roda::RodaCache for a thread safe cache, currently used for match patterns, templates, and plugins (jeremyevans)

    • ⚡️ Optimize matching by caching consume regexp for strings, regexp, symbol, and :extension matchers (jeremyevans)

    • ➕ Add r.root for GET / requests, for easier to read version of r.get "" (jeremyevans)

    • ⚡️ Optimize r.is terminal matcher, remove :term hash matcher (jeremyevans)

    • 🔌 Make flash plugin no longer depend on sinatra-flash (jeremyevans)

    • 🚚 Move version file to roda/version so it can be required separately without loading dependencies (jeremyevans)

  • v0.9.0 Changes

    July 30, 2014
    • 🎉 Initial public release