New Features¶ ↑
-
A host_routing plugin has been added, for easier routing based on the request host. Example:
plugin :host_routing do |hosts| hosts.to :api, "api.example.com", "api2.example.com" hosts.default :www end route do |r| r.api do # requests to api.example.com or api2.example.com end r.www do # requests to other domains end end
The plugin also adds request predicate methods:
route do |r| r.api? # true if the request is to api.example.com or api2.example.com r.www? # true for request for other domains end
If the :scope_predicates plugin option is given, these predicate methods are also supported directly in block scope (no “r.”).
For more advanced cases, such as prefix matches on the host, the hosts.default method accepts a block. In this case, you should also call hosts.register to notify the plugin about what hosts the block could return:
plugin :host_routing do |hosts| hosts.register :api hosts.default :www do |host| :api if host.end_with?(".api.example.com") end end
Other Improvements¶ ↑
-
In the custom_block_results plugin, if the block passed to handle_block_result returns an object that is not a String, nil, or false,
Roda
no longer attempts to write it to the response body. Doing so is undesirable and would be a violation of the rack spec. -
Minor performance improvements have been made to the header_matchers plugin.