Catalyst-Runtime
view release on metacpan or search on metacpan
- fix handling of fragments in uri_for when path is an unblessed string (GH#160)
- ensure catalyst.pl is included with dist
- drop IO::Scalar prereq
- include optional test prereqs as develop prereqs
- remove unused developer prereq on Catalyst::Engine::PSGI
- use namespace::clean consistently rather than namespace::autoclean
- use JSON for test metadata to avoid needing YAML
- use JSON::MaybeXS consistently in code
- drop unused prereq of HTTP::Request::AsCGI
- drop unneeded prereq of Class::Data::Inheritable
- fix tests to cope with changes in new versions of Time::HiRes
- POD typo and syntax fixes
5.90117 - 2018-01-21
- Fixed errors in distribution packaging
5.90116 - 2018-01-19
- Switch from Module::Install to Distar (solves problems that MI has with newer Perl) haarg++
- Killed Test::Aggregate since its clearly doomed
- PR135 - improved test cases for query keywork
- PR158 - improved docs for Catalyst::Test
- PR157 - improved error response for data_handlers
- PR156 - POD fixes
- PR154 - Few dependencies
- PR152 - Better support for HTTP Patch
5.90115 - 2017-05-01
- fixes for silent bad behavior in Catalyst::ScriptRole and 'ensure_class_loaded'
(hobbs++)
- do not require MXRWO if Moose is new enough to have cored it (ether++)
- documentation improvements (ether++)
- Encoding documentation improvements (colinnewell++)
- Improve documentation and test cases for 'abort_chain_on_error_fix' configuration
option (melmothx++)
- Better debug output when using Hash::MultiValue (tremor69++)
- Fixes for detecting debug terminal size (simonamor++)
5.90114 - 2016-12-19
- Fixed regression introduced in the last version (5.90113) which caused
application to hang when the action private name contained a string
like 'foo/bar..html'. If you are running 5.90113 you should consider this
a required update.
- Tweaked travis CI script.
5.90113 - 2016-12-15
- Fixed issue with $controller->action_for when targeting an action in
a namespace nested inside the current controller and the current controller
is a 'root' controller.
- Enhanced $controller->action_for so that you can reference the 'parent'
controller via relative path (eg ->action_for('../foo')).
- Backcompat fix for people that made the mistake of doing $c->{stash}
- Sort controllers in setup_actions so cross-controller precedence is
consistent.
5.90112 - 2016-07-25
- Spelling fixes from Debian group.
- Fixed regression introduced in last release that caused the code to crap out
if you set the encoding to 'undef'.
5.90111 - 2016-07-20
- Improved documentation around some of the unicode changes; tests (melmothx++)
5.90110 - 2016-07-20
- Better catching of HTTP style exceptions so that you can reliable use one to
override many core method.
- Documention on better ways to catch and handle Unicode errors
- We now check the unicode in your URL request queries and raise an error if the
check fails. This was done to be consistent with what we do in other parts of
the code (such as in args, or POSTed parameters). If this breaks your code in
ways you don't want to fix, you may disable this using the global configuration
setting, "do_not_check_query_encoding".
- Removed configuration setting, "decode_query_using_global_encoding" since it no
longer does anything useful. Query decoding follows from whatever you set the
global encoding to, unless you specify an alternative or to not decode.
5.90106 - 2016-07-05
- Fixed regression in debug screen rendering of the private names in chained
actions caused by commit 5dd46e24eedec447bdfbc4061ed683b5a17a7b0c.
- Fixed incorrect date entered for the release of 5.90105
- Fixed some incorrect code in a test case that might be causing test fails
in some configurations.
5.90105 - 2016-06-08
- Tweak some test cases to try and prevent them from failing in limited cases.
- Changed how we compose traits onto the response, request, and stats class so
that we compose just once at setup time (performance optimization). Also added
a debug screen at startup to display composed classes to help with debugging.
- Fixed a regressed caused by the changes we made to the way ->state works so that
now when you forward to an action and that action throws an exception, $c->state
is set to 0, instead of the value of the exeption (this is to be as indicated by
the documentation). (cventers++ for reported bug and test case).
- Changed the code that detects if you try to set HTTP headers after headers are
finalized to not warn if you are just requested the response header state. Tweaked
this error message a bit to help people understand it.
5.90104 - 2016-04-04
- Merged pull request #131, fix for noisy debug logs when used type constraints
in your actions. Additional changes to the developer debug screen output to
improve reporting details.
- Merged pull request #133, fix for case when a file upload filename contains
wide characters which caused the filename to not appear in the uploads hash.
5.90103 - 2015-11-12
- More documentation fixes (thanks to the debian maintainers and melmothx++)
- Fixed the way we parse subroutine attribute values to fix a regression
introduced in 5.90102. This is a recommended upgrade (tsibley++, mst++)
- Fixed regression around auto actions that escape by throwing an exception
which was introduced in the last release.
- Bumped namespace::autoclean dep to latest since tests require -except
5.90102 - 2015-10-29
- Better warnings when there's an error reading the psgi.input (billmosley++)
- Fixed spurious warnings in uri_for when using no arguments (melmothx++ and
paultcochrane++)
- Documentation improvements (paultcochrane++)
- Improvements to 'search_extra' configuration and tests around using
uri_for as a class method (cngarrison++)
- Fix when Path() is set and not geting registered as action (grim8634++)
- $c->state is now preserved over actions in a chain, and across begin,
auto, ->forward and ->detach.
5.90101 - 2015-09-04
- Fixed a regression introduced in the last release which caused test
case failure when using a version of Perl 5.14 or older.
5.90100 - 2015-08-24
- Document using namespace::autoclean with controllers that have actions
so we now have the follow application attributes 'request_class_traits',
'response_class_traits' and 'stats_class_traits' which allow you to compose
traits for these core Catalyst classes without needing to create subclasses. So
in general any request or response trait on CPAN that used 'CatalystX::RoleApplicator'
should now just work with this core feature. Note that can also set thse roles
via new configuration keys, 'request_class_traits', 'response_class_traits'
and 'stats_class_traits'. If you use both configuration and application class methods,
they are combined.
- NEW FEATURE: Core concepts from 'CatalystX::ComponentsFromConfig'. You can now
setup components directly from configuration. This could save you some effort and
creating 'empty' base classes in your Model/View and Controller directories. This
feature is currently limited in that you can only configure components that are
'true' Catalyst components (but you may use Catalyst::Model::Adaptor to proxy
stand alone classes...).
- Only create a stats object if you are using stats. This is a minor performance
optimization, but there's a small chance it is a breaking change, so please
report any stats related issues.
- Added a developer mode warning if you call a component with arguments that does not
expect arguments (for example calling $c->model('Foo', 1,2,3,4) where Myapp::Model::Foo
does not ACCEPT_CONTEXT. Only components that ACCEPT_CONTEXT do anything with
passed arguments in $c->controller/view/model.
- Change the way components are setup so that you can now rely on all components
when setting up a component. Previously application scoped components could not
reliably use an existing application scoped component as a dependecy for initialization.
5.90089_001 - 2015-03-26
- New development branch synched with 5.90085.
- NEW FEATURE: Type Constraints on Args/CaptureArgs. Allows you to declare
a Moose, MooseX::Types or Type::Tiny named constraint on your Arg or
CaptureArg.
- When using $c->uri_for (or the derived $c->uri_for_action) and the target
action has type constrainted args (or captures), verify that the proposed
URL matches the defined args. In general $c->uri_for will be a bit more
noisy if the supplied arguments are not correct.
- New top level document on Route matching. (Catalyst::RouteMatching). This
document is still in development, but is worth review and comments.
5.90085 - 2015-03-25
- Small change to Catalyst::Action to prevent autovivication of Args value (dim1++)
- Minor typo fixes (Abraxxa++)
- Make sure than when using chained actions and when more than one action
matches the same path specification AND has Args(0), that we follow the
"in a tie, the last action defined wins" rule. There is a small chance
this is a breaking change for you. See Catalyst::Upgrading for more.
You may use the application configuration setting "use_chained_args_0_special_case"
to disable this new behavior, if you must for back-compat reasons.
- Added PATCH HTTP Method action attribute shortcut.
- Several new configuration options aimed to give improved backwards compatibility
for when your URL query parameters or keywords have non UTF-8 encodings.
See Catalyst::Upgrading.
5.90084 - 2015-02-23
- Small change to the way body parameters are created in order to prevent
trying to create parameters twice.
- Use new HTTP::Body and code updates to fix issue when POSTed params have
non UTF-8 charset encodings or otherwise complex upload parts that are not
file uploads. In these cases when Catalyst can't determine what the value of
a form upload is, will return an instance of Catalyst::Request::PartData with
all the information need to figure it out. Documentation about this corner
case. For RT https://rt.cpan.org/Ticket/Display.html?id=101556
- Two new application configuration parameters 'skip_body_param_unicode_decoding'
and 'skip_complex_post_part_handling' to assist you with any backward
compatibility issues with all the new UTF8 work in the most recent stable
Catalyst. You may use these settings to TEMPORARILY disable certain new
features while you are seeking a long term fix.
5.90083 - 2015-02-16
- Fixed typo in support for OPTIONS method matching (andre++)
- Stop using $env->{'plack.request.query'} as a query parsing optimization
since 1) it doesn't belong to us and 2) there's subtle differences in the
way plack parses parameters and catalyst does. This fixes a bug when you
are using middleware that uses Plack::Request to do its thing. This change
might have subtle impact on query parsing. Please test this change!
5.90082 - 2015-01-10
- Fixed a regression created in $response->from_psgi_response and test case
to prevent it happening again.
5.90081 - 2015-01-10
- created class attribute 'finalized_default_middleware' which determines
if the default middleware has been added to the stack yet or not. This
removes a horrible hack that polluted the configuration hash. Added
test case to prevent regressions.
5.90080 - 2015-01-09
- Minor documentation corrections
- Make the '79 development series stable
5.90079_008 - 2015-01-07
- If we get a response set from $res->from_psgi_response and that response
has a charset for the content type, we clear encoding for the rest of the
response (avoid double encoding). Added more documentation around this.
- Documentation updates and typo fixes across various UTF8 docs (Mark Ellis++)
5.90079_007 - 2015-01-07
- Merged from Stable (5.90079)
- reviewed and cleaned up UTF8 related docs
- replace missing utf8 pragma in Catalyst::Engine
- Cleaned up spelling errors in various docs (abbraxxa++)
- New document Catalyst::UTF8 which attempts to summarize UTF8 and encoding
changes introduced in v5.90080.
5.90079_006 - 2015-01-02
- Removed unneeded dependency on RenderView in new test case that was causing fails
on CPAN testers that did not just happen to have that dependency already installed
- Updated copyright notices to 2015
- Documentation patches around the setup methods and clarification on on security
note posted a few months ago.
- Added my name to the contributors list
5.90079_005 - 2014-12-31
- Merged changes from 5.90078
- If configuration 'using_frontend_proxy' is set, we add the correct middleware
to the default middleware list. This way you get the correct and expected
behavior if you are starting your application via one of the generated scripts
or if you are calling MyApp->psgi_app. Previously if you started the application
with ->psgi_app (or to_app) we ignored this configuration option
- New configuration option 'using_frontend_proxy_path' which enables
Plack::Middleware::ReverseProxyPath on your application easily. Please note that
Plack::Middleware::ReverseProxyPath is not an automatic dependency of Catalyst at
this time, so if you want this feature you should add it to your project dependency
whichever is first (preferring to find JSON::MaybeXS). This should
improve compatibility as you likely already have one installed.
- Fixed a warning in the server script (bokutin++)
- We now populate various Plack $env keys in order to play nice with
downstream middleware or plack apps (and to reduce processing if
those keys already exist). Keys added:
- plack.request.query
- plack.request.body
- plack.request.merged
- plack.request.http.body
(NOTE: REMOVED IN 5.90049_005)
- If incoming input (from a POST or PUT) is not buffered, create the
buffer and set the correct psgi env keys to note this for downstream
psgi apps / middleware. This should solve some issues where Catalyst
sucks up the body input but its not buffered so downstream apps can't
read it (for example FCGI does not buffer). We now also try to make
sure the body content input is reset to the start of the filehandle
so that we are polite to downstream middleware /apps.
- NEW FEATURE: Catalyst::Response can now pull response from a PSGI
specification response. This makes it easier to host external Plack
applications under Catalyst. See Catalyst::Response->from_psgi_response
- NEW FEATURE: New configuration option 'use_hash_multivalue_in_request'
will populate $request methods 'parameters', 'body_parameters' and
'query_parameters' with an instance of Hash::MultiValue instead of a
HashRef. This is used by Plack and is intended to reduce the need to
write defensive logic since you are never sure if an incoming parameter
is a scalar or arrayref.
- NEW FEATURE: We now experimentally support Net::Async::HTTP::Server
and IO-Async based event loops. Examples will follow.
5.90049_003 - 2013-09-20
- Documented the new body_data method added in the previous release
- Merged from master many important bugfixes and forward compatibility
updates, including:
- Use modern preferred method for Moose metaclass access and many other
small changes to how we use Moose for better forward compat (ether++)
- Killed some evil use of $@ (ether++)
- spelling fixes and documentation updates (ether++), (gerda++)
- use Test::Fatal over Test::Exception (ether++)
- Misc. test case fixes to modernize code (ether++)
- Added a first pass cpanfile, to try and make it easier to bootstrap
a development setup (ether++)
5.90049_002 - 2013-08-20
- Fixed loading middleware from project directory
- Fixed some pointless warnings when middleware class lacked VERSION
- NEW FEATURE: Declare global 'data_handlers' for parsing HTTP POST/PUT
alternative content, and created default JSON handler. Yes, now Catalyst
handles JSON request content out of the box! More docs eventually but
for now see the DATA HANDLERS section in Catalyst.pm (or review the test
case t/data_handler.t
5.90049_001 - 2013-07-26
- Declare PSGI compliant Middleware as part of your Catalyst Application via
a new configuration key, "psgi_middleware".
- Increased lowest allowed module version for Module::Pluggable to be 4.7 (up
from 3.4) to solve the fact this is no longer bundled with Perl in v5.18.
5.90042 - 2013-06-14
- Removed more places where an optional dependency shows up in the test
suite. Hopefully really fixed the unicode regression introduced in 5.90040
- reverted the change we introduced in 5.90040 where a unicode conversion
error warned instead of died. Now it dies again, like in the stand alone
plugin
- More work to make sure nothing happens with encoding unless you explicitly
ask for encoding
- Code to hopefully fix an issue where file uploads using the unicode plugin
caused trouble.
5.90041 - 2013-06-14
- Bug fix release to fix regressions introduced in previous. I would consider
this a likely upgrade and if you are having trouble with the previous I hope
this fixes all of them.
- Fix regression with the cored Unicode plugin that broke systems where you are
setting encoding type in an external configuration file
- Fixed circular dependency introduced when we cored the unicode plugin tests
- Fixed a longstanding problem with stats when locale uses , instead of . for
number decimals
- Fixed some docs that didn't properly date the previous release.
5.90040 - 2013-06-12
! Stricter checking of attributes in Catalyst::DispatchType::Chained:
1) Only allow one of either :CaptureArgs or :Args
2) :CaptureArgs() argument must be numeric
3) :CaptureArgs() and :Args() arguments cannot be negative
- Add Devel::InnerPackage to dependencies, fixing tests on Perl 5.17.11
as it's been removed from core. RT#84787
- New support for closing over the PSGI $writer object, useful for working
with event loops.
- lets you access a psgix.io socket, if your server supports it, for manual
handling of the client - server communication, such as for websockets.
- Fix waiting for the server to start in t/author/http-server.t
- new config flag 'abort_chain_on_error_fix' that exits immediately when a
action in an action chain throws and error (fixes issues where currently
the remaining actions are processed and the error is handled at chain
termination).
- Cored the Encoding plugin. Now get unicode out of the box by just setting
$c->config->{encoding} = 'UTF-8'. BACKCOMPAT WARNING: If you are using
the Encoding plugin on CPAN, we skip it to avoid double encoding issues, so
you should remove it from your plugin list, HOWEVER the 'encoding' config
setting is now undef, rather than 'UTF-8' (this was done to avoid breaking
people's existing applications) so you should add the encoding setting to
you global config. There's some other changes between the stand alone
plugin and the cored version, if you use it be sure to see Catalyst::Upgrading
for more.
- minor documentation typo fixes and updates
5.90030 - 2013-04-12
! POSSIBLE BREAKING CHANGE: Removed Regexp dispatch type from core, and put
it in an external package. If you need Regexp dispatch types you should
add "Catalyst-DispatchType-Regex" as a distribution to your build system.
- make $app->uri_for and related methods return something sane, when called
as an application method, instead of a context method. Now if you call
MyApp::Web->uri_for(...) you will get a generic URI object that you need to
resolve manually.
- documentation updates around forwarding to chained actions.
- Fixed bug when a PSGI engine need to use psgix logger.
- Added cpanfile as a way to notice we are a dev checkout.
- Added 'x-tunneled-method' HTTP Header method override to match features in
Catalyst::Action::REST and in other similar systems on CPAN.
- smarter validation around action attributes.
5.90020 - 2013-02-22
! Catalyst::Action now defines 'match_captures' so it is no long considered
an optional method. This might break you code if you have made custom
action roles/classes where you define 'match_captures'. You must change
your code to use a method modifier (such as 'around').
- New match method "Method($HTTP_METHOD)" where $HTTP_METHOD in (GET, POST,
PUT, HEAD, DELETE, OPTION) and shortcuts in controllers called "GET, POST
PUT, HEAD, DELETE, OPTION"). Tests and documentation. Please note if you
are currently using Catalyst::ActionRole::MatchRequestMethods there may
be compatibility issues. You should remove that actionrole since the built
in behavior is compatible on its own.
- Initial debug screen now shows HTTP Method Match info
- security fixes in the way we handle redirects
- Make Catalyst::Engine and Catalyst::Base immutable
- Some test and documentation improvements
5.90019 - 2012-12-04 21:31:00
- Fix for Perl 5.17.6 (commit g7dc8663). RT#81601
- Fix for Perl 5.8. RT#61122
- Remove use of MooseX::Types as MooseX::Types is broken on Perl 5.8
RT#77100 & RT#81121
5.90018 - 2012-10-23 20:55:00
- Changed code in test suite so it no longer trips up on recent changes to
HTTP::Message.
5.90017 - 2012-10-19 22:33:00
- Change Catalyst _parse_attrs so that when sub attr handlers:
1) Can return multiple pairs of new attributes.
2) Get their returned attributes passed through the correct attribute handler.
e.g sub _parse_Whatever_attr { return Chained => 'foo', PathPart => 'bar' }
Will now work because both new attributes are respected, and the Chained
which stopped Catalyst::Controller from compiling.
- In Catalyst::Test, don't mangle headers of non-HTML responses. RT#79043
5.90008 - TRIAL 2012-02-06 20:49:00
New features and refactoring:
- Much of the Catalyst::Engine code has been moved into Catalyst::Request
and Catalyst::Response, to be able to better support asynchronous web
servers such as Twiggy, by making the application engine more reenterant.
This change is as a prequel to full asynchronous support inside Catalyst
for AnyEvent and IO::Async backends, which allow highly scaleable streaming
(for applications such as multi-part XML HTTPRequests, and Websockets).
Deprecations:
- This means that the $c->engine->env method to access the PSGI environment
is now deprecated. The accessor for the PSGI env is now on Catalyst::Request
as per applications which were using Catalyst::Engine::PSGI
Catalyst::Engine::PSGI is now considered fully deprecated.
- The private _dump method in Catalyst::Log is now deprecated. The dumper is
not pluggable and which dumper to use should be a user choice. Using
an imported Dump() or Dumper() function is less typing than $c->log->_dump
and as this method is unused anywhere else in Catalyst, it has been scheduled
for removal as a cleanup. Calling this method will now emit a stack trace
on first call (but not on subsequent calls).
Back compatibility fixes:
- Applications still using Catalyst::Engine::PSGI as they rely on
$c->request->env - this is now the provided (and recommended) way of
accessing the raw PSGI environment.
Tests:
- Spurious warnings have been removed from the test suite
Documentation:
- Fix the display of PROJECT FOUNDER and CONTRIBUTORS sections in the
documentation. These were erroneously being emitted when the Pod
was converted to HTML for search.cpan.org
- Fix documentation for the build_psgi_app app method. Previously the
documentation advised that it provided the psgi app already wrapped
in default middleware. This is not the case - it is the raw app psgi
5.90007 - 2011-11-22 20:35:00
New features:
- Implement a match_captures hook which, if it exists on an action,
is called with the $ctx and \@captures and is expected to return
true to continue the chain matching and false to stop matching.
This can be used to implement action classes or roles which match
conditionally (for example only matching captures which are integers).
Bug fixes:
- Lighttpd script name fix is only applied for lighttpd versions
< 1.4.23. This should fix non-root installs of lighttpd in versions
over that.
- Prepare_action is now inside a try {} block, so that requests containing
bad unicode can be appropriately trapped by
Catalyst::Plugin::Unicode::Encoding
5.90006 - 2011-10-25 09:18:00
New features:
- A new 'run_options' class data method has been added to Catalyst.pm
This is used to store all the options passed by scripts, allowing
application authors to add custom options to their scripts then
get them passed through to the application.
Documentation:
- Clarify that if you manually write your own .psgi file, then optional
proxy support (via the using_frontend_proxy config value) will not be
enabled unless you explicitly apply the default middlewares from
Catalyst, or you apply the middleware manually.
Bug fixes:
- Fix issue due to perl internals bugs in 5.8 and 5.10 (not present in
other perl versions) require can pass the context inappropriately,
meaning that some methods of loading classes can fail due to void
context being passed through to make_immutable, causing it to not return
a value.
This bug caused loading Catalyst::Script::XXX to fail and is fixed
both by bumping the Class::Load dependency, and also adding an explicit
'1;' to the end of the classes, avoiding the context issue.
- Fix using_frontend_proxy support in mod_perl by using the psgi wrapped
in default middleware in mod_perl context, rather than the raw psgi.
5.90005 - 2011-10-22 13:35:00
New features:
- $c->uri_for_action can now take an array of CaptureArgs and Args
If you have an action which has both, then you can now say:
$c->uri_for_action('/myaction', [@captures, @args]);
whereas before you had to say:
$c->uri_for_action('/myaction', [@captures], @args);
The previous form is still supported, however in many cases it is
easier for the application code to not have to differentiate between
the two.
- Catalyst::ScriptRunner has been enhanced so that it will now
load and apply traits, making it easier to customise.
- MyApp::TraitFor::Script (if it exists) will be applied to all
scripts in the application.
- MyApp::TraitFor::Script::XXXX will be applied to the relevant script
(for example MyApp::TraitFor::Script::Server will be applied to
MyApp::Script::Server if it exists, or Catalyst::Script::Server
otherwise).
Documentation:
- Document how to get the vhost of the request in $c->req->hostname
to avoid confusion
- Remove documentation showing Global / Regex / Private actions
as whilst these still exist (and work), they are not recommended.
- Remove references to the -Engine flag.
- Remove references to the deprecated Catalyst->plugin method
- Spelling fixed (and tested) throughout the documentation
( run in 0.972 second using v1.01-cache-2.11-cpan-39bf76dae61 )