-
Notifications
You must be signed in to change notification settings - Fork 0
Upgrading
The methods build_body and build_headers have been removed from Mojo::Content. Instead, use get_header_chunk, get_body_chunk, headers_contain, or body_contains.
Support for switching user and group in Mojo::Server has been removed as it was untested and not correctly implemented. This also means the related user and group options have been removed:
- Mojo::Server:
userandgroupattributes, andsetuidgidmethod - Mojo::Server::Hypnotoad:
userandgroupconfiguration settings - daemon and prefork commands:
userandgroupswitches
There are several possible alternatives to this functionality such as the SetUserGroup plugin, see here for more information.
Name listing support was removed from the Mojolicious::Controller and Mojo::Parameters param methods, in favor of the more appropriate Mojolicious::Parameters names method. For example, my @names = $c->param should now be written as my @names = @{$c->req->params->names}, if you wish to retrieve all GET/POST parameter names. The previous behavior of including names of placeholders and uploads has been removed. Similarly, the names of validated parameters in Mojolicious::Validator::Validation have been moved from param to passed and failed, which also now return arrayrefs instead of lists.
Multi-name support was removed from various methods that retrieved parameters by name; these methods can only be used to retrieve one parameter at a time now. The affected methods include: Mojolicious::Controller cookie, param, and signed_cookie; Mojolicious::Validator::Validation param; Mojo::Parameters param; Mojo::Message cookie and upload.
The log method was removed from Mojo::Log; use the individual logging methods instead (e.g. debug, info). The is_level method was also removed, use is_debug and similar methods to test the log level. The is_fatal method was removed because fatal logging is always enabled.
The all and find methods now return arrayrefs instead of lists.
Mojo::Transaction no longer supports receiving a prepared socket in $tx->connection, which means the UserAgent cannot be coerced into using a special socket. This is only relevant to you if you rely on UA over Unix domain sockets or similar. Sri has indicated that a patch to factor out some UA internals into Mojo::UserAgent::ConnectionPool might be a reasonable way to restore this, if you're interested.
The Mojo::Loader OO API has been removed, use the exported-on-demand functions data_section, find_modules, and load_class directly instead.
The deprecated Mojolicious::Controller methods render_exception and render_not_found have been removed, use the helpers $c->reply->exception and $c->reply->not_found instead.
The accept mutex behavior was removed from Mojo::IOLoop and Mojo::Server::Prefork for better performance, along with the related attributes and options:
- Mojo::IOLoop:
accept_interval,lock, andunlock - Mojo::Server::Prefork:
accept_interval,lock_file, andlock_timeout - prefork command
-a/--accept-interval,--lock-fileand-L/--lock-timeoutoptions - Hypnotoad settings
accept_interval,lock_file, andlock_timeout
- Mojo::Reactor
is_readablemethod - Mojolicious::Routes::Route
bridgemethod - useunderinstead - Mojolicious::Routes
auto_rendermethod
Mojo::DOM methods have been reorganized to better match the DOM spec.
-
all_contents=>descendant_nodes -
contents=>child_nodes -
match=>matches(also renamed in Mojo::DOM::CSS) -
following_siblings=>following_nodes -
preceding_siblings=>preceding_nodes -
next_sibling=>next_node -
previous_sibling=>previous_node -
siblings=> Replaced byfollowingandprecedingmethods -
node=>type -
type=>tag
- Mojo::UserAgent::CookieJar:
-
extracting=>collecting -
extract=>collect -
inject=>prepare - Mojo::Template:
template=>unparsed - Mojolicious::Types:
types=>mapping - Mojolicious::Routes::Match:
-
current=>position -
match=>find - Mojolicious::Routes::Pattern:
pattern=>unparsed - Mojo::UserAgent::Proxy:
inject=>prepare - Mojo::Parameters:
params=>pairs - prefork command switch:
-A=>-a - Hypnotoad option:
keep_alive_requests=>requests
The Mojo::JSON object-oriented API has been removed, encode_json and decode_json functions should be used instead.
Mojo::Collection stringification support has been removed, use the join method instead. Mojo::Collection also no longer uses AUTOLOAD; the map method should be used for this functionality (as well as to replace the removed pluck method).
Mojo::DOM no longer uses AUTOLOAD, the children method should be used instead. The val method has also been removed.
Mojo::JSON::Pointer methods no longer take a $data argument to specify the data structure to traverse, and only uses its data attribute.
The render_static method of Mojolicious::Controller has been removed, use the $c->reply->static helper instead.
- Mojo::EventEmitter:
emit_safe - Mojolicious::Routes::Route:
has_conditions
Methods that previously worked differently in scalar than in list context now always assume scalar context, and new methods (every_*) have been added to cover the list context functionality, returning an arrayref. For example, my @things = $c->param('thing') should now be written my @things = @{$c->every_param('thing')}.
- Mojo::Message:
-
cookie/every_cookie -
upload/every_upload - Mojo::Message::Request:
param/every_param - Mojo::Parameters:
param/every_param - Mojolicious::Controller:
-
cookie/every_cookie -
param/every_param -
signed_cookie/every_signed_cookie - Mojolicious::Validator::Validation:
param/every_param
This change addresses a security vulnerability when working with context-sensitive functions in perl; see here for more information.