X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Runtime.git;a=blobdiff_plain;f=lib%2FCatalyst%2FDelta.pod;h=985b5719e71368497463c824843c4c4dfd537cd1;hp=2c94406f2c75dd4fdc581960e98ee18533a157e7;hb=5bb2a5b3a3703b0eb12f6be0983e7f4676c55545;hpb=b31499bc273decc3b6ffb9514e912ea1d1dca4c1 diff --git a/lib/Catalyst/Delta.pod b/lib/Catalyst/Delta.pod index 2c94406..985b571 100755 --- a/lib/Catalyst/Delta.pod +++ b/lib/Catalyst/Delta.pod @@ -1,82 +1,262 @@ -=head1 Deltachanges from 5.7 to 5.8 +=head1 NAME +Catalyst::Delta - Overview of changes between versions of Catalyst -This is an overview of the user visible changes in 5.8 +=head1 DESCRIPTION -=head2 Deprecations +This is an overview of the user-visible changes to Catalyst between major Catalyst releases. -::[MVC]:: style naming scheme has been deprecated and will warn +=head2 VERSION 5.90053 +We are now clarifying the behavior of log, plugins and configuration during +the setup phase. Since Plugins might require a log during setup, setup_log +must run BEFORE setup_plugins. This has the unfortunate side effect that +anyone using the popular ConfigLoader plugin will not be able to supply +configuration to custom logs since the configuration is not yet finalized +when setup_log is run (when using ConfigLoader, which is a plugin and is +not loaded until later.) - - Use Class::C3::Adopt::NEXT (rafl) +As a workaround, you can supply custom log configuration directly into +the configuration: -Catalyst 5.80 uses L method dispatch order. This is built into -perl 5.10 (new pragma mro), and comes via L for perl 5.8. This -replaces L with L, forcing all components to -resolve methods using C3, rather than the unpredictable dispatch order of -L. Please "use MRO::Compat" in both perl 5.8 and perl 5.10 to activate -this feature. -- Disallow writing to config after setup and disallow calling setup more -than once (rafl) + package MyApp; + use Catalyst; -=head2 Dispatcher + __PACKAGE__->config( + my_custom_log_info => { %custom_args }, + ); -- visit and go now takes CaptureArgs + __PACKAGE__->setup; - - Change the $c->visit and $c->go methods to optionally take - CaptureArgs, making them useful to call ActionChains with (t0m) +If you wish to configure the custom logger differently based on ENV, you can +try: - - Fix forwarding to Catalyst::Action objects (Rafael Kitover). + package MyApp; -=head2 restarter + use Catalyst; + use Catalyst::Utils; -- Non-naive implementation of making mutable on restart using - B::Hooks::OP::Check::StashChange if installed (t0m) - For a restart the immutable Moose-objects need to turn back to mutable. - With L installed this will be done. + __PACKAGE__->config( + Catalyst::Utils::merge_hashes( + +{ my_custom_log_info => { %base_custom_args } }, + +{ do __PACKAGE__->path_to( $ENV{WHICH_CONF}."_conf.pl") }, + ), + ); -= head2 $c->uri_for_action method. (hdp) + __PACKAGE__->setup; -A private path to the Catalyst action you want to create a URI for. -This is a shortcut for calling C<< $c->dispatcher->get_action_by_path($path) >> -and passing the resulting C<$action> and the remaining arguments to -C<< $c->uri_for >>. +Or create a standalone Configuration class that does the right thing. +Basically if you want to configure a logger via Catalyst global configuration +you can't use ConfigLoader because it will always be loaded too late to be of +any use. Patches and workaround options welcomed! -=head2 Logging +=head2 VERSION 5.9XXXX 'cataplack' - - Make log levels additive, and add documentation and tests - for the setup_log method, which previously had none. - Sewn together by t0m from two patches provided by David E. Wheeler +The Catalyst::Engine sub-classes have all been removed and deprecated, +to be replaced with Plack handlers. -=head2 Consequences of the Moose backend +Plack is an implementation of the L specification, which is +a standard interface between web servers and application frameworks. - - Use MooseX::MethodAttributes::Inheritable to contain action - attributes. This means that attributes are now represented in the MOP, - allowing method modifiers on actions to work as expected. (rafl) - - Provide a reasonable API in Catalyst::Controller for working with - and registering actions, allowing a controller sub-class to replace - subroutine attributes for action declerations with an alternate - syntax. (rafl/hdp) - - Refactor capturing of $app from Catalyst::Controller into - Catalyst::Component::ApplicationAttribute for easier reuse in other - components (Florian Ragwitz) - - Make MyApp immutable at the end of the scope after the setup - method is called, fixing issues with plugins which have their - own new methods by inlining a constructor on MyApp (t0m) - - Instantiate correct sub-class of Moose::Meta::Class for non-Moose - components where Catalyst forces the creation of a metaclass instance. - -=head2 Test Suite +This should be no different for developers, and you should not have to +migrate your applications unless you are using a custom engine already. - - Change Catalyst::Test to use Sub::Exporter (Florian Ragwitz). - - Port to Moose - - Support mocking virtualhosts in test suite () - - Add methods like action_ok and action_redirect to write - more compact tests +This change benefits Catalyst significantly by reducing the amount of +code inside the framework, and means that the framework gets upstream +bug fixes in L, and automatically gains support for any web server +which a L compliant handler is written for. -=head2 Catalyst::Response->print() +It also allows you more flexibility with your application, and allows +the use of cross web framework 'middleware'. -Prints @data to the output stream, separated by $,. This lets you pass -the response object to functions that want to write to an L. +Developers are recommended to read L for notes about +upgrading, especially if you are using an unusual deployment method. + +Documentation for how to take advantage of L can be found in +L, and information about deploying your application +has been moved to L. + +=head3 Updated modules: + +A number of modules have been updated to pass their tests or not +produce deprecation warnings with the latest version of Catalyst. +It is recommended that you upgrade any of these that you are using +after installing this version of Catalyst. + +These extensions are: + +=over + +=item L + +This is now deprecated, see L. + +=item L + +Has been updated to not produce deprecation warnings, upgrade recommended. + +=item Catalyst::ActionRole::ACL + +Has been updated to fix failing tests (although older versions still +function perfectly with this version of Catalyst). + +=item Catalyst::Plugin::Session::Store::DBIC + +Has been updated to fix failing tests (although older versions still +function perfectly with this version of Catalyst). + +=item Catalyst::Plugin::Authentication + +Has been updated to fix failing tests (although older versions still +function perfectly with this version of Catalyst). + +=back + +=head1 PREVIOUS VERSIONS + +=head2 VERSION 5.8XXXX 'catamoose' + +=head3 Deprecations + +Please see L for a full description of how changes in the +framework may affect your application. + +Below is a brief list of features which have been deprecated in this release: + +=over + +=item ::[MVC]:: style naming scheme has been deprecated and will warn + +=item NEXT is deprecated for all applications and components, use MRO::Compat + +=item Dispatcher methods which are an implementation detail made private, public versions now warn. + +=item MyApp->plugin method is deprecated, use L instead. + +=item __PACKAGE__->mk_accessors() is supported for backward compatibility only, use Moose attributes instead in new code. + +=item Use of Catalyst::Base now warns + +=back + +=head3 New features + +=head3 Dispatcher + +=over + +=item Fix forwarding to Catalyst::Action objects. + +=item Add the dispatch_type method + +=back + +=head3 Restarter + +The development server restarter has been improved to be compatible with +immutable Moose classes, and also to optionally use +L to handle more complex application layouts +correctly. + +=head3 $c->uri_for_action method. + +Give a private path to the Catalyst action you want to create a URI for. + +=head3 Logging + +Log levels have been made additive. + +=head3 L + +=over + +=item Change to use L. + +=item Support mocking multiple virtual hosts + +=item New methods like action_ok and action_redirect to write more compact tests + +=back + +=head3 Catalyst::Response + +=over + +=item * + +New print method which prints @data to the output stream, separated by $,. +This lets you pass the response object to functions that want to write to an +L. + +=item * + +Added code method as an alias for C<< $res->status >> + +=back + +=head3 Consequences of the Moose back end + +=over + +=item * + +Components are fully compatible with Moose, and all Moose features, such as +method modifiers, attributes, roles, BUILD and BUILDARGS methods are fully +supported and may be used in components and applications. + +=item * + +Many reusable extensions which would previously have been plugins or base +classes are better implemented as Moose roles. + +=item * + +L is used to contain action +attributes. This means that attributes are represented in the MOP, and +decouples action creation from attributes. + +=item * + +There is a reasonable API in Catalyst::Controller for working with +and registering actions, allowing a controller sub-class to replace +subroutine attributes for action declarations with an alternate +syntax. + +=item * + +Refactored capturing of $app from L into +L for easier reuse in other +components. + +=item * + +Your application class is forced to become immutable at the end of compilation. + +=back + +=head3 Bug fixes + +=over + +=item * + +Don't ignore SIGCHLD while handling requests with the development server, so that +system() and other ways of creating child processes work as expected. + +=item * + +Fixes for FastCGI when used with IIS 6.0 + +=item * + +Fix a bug in uri_for which could cause it to generate paths with multiple +slashes in them. + +=item * + +Fix a bug in Catalyst::Stats, stopping garbage being inserted into +the stats if a user calls begin => but no end + +=back