Add the crux of options that need fixing from jnap's survey
[catagits/Catalyst-Runtime.git] / TODO
CommitLineData
77d892df 1# Known Bugs:
cdb34619 2
3 - Bug ->go or ->visit causes actions which have Args or CaptureArgs called
4 twice when called via ->go or ->visit.
5
6 Test app: http://github.com/bobtfish/catalyst-app-bug-go_chain/tree/master
7
77d892df 8# Compatibility warnings to add:
9
10 - $self->config should warn as config should only ever be called as a
5d94e8f9 11 class method (TESTS).
77d892df 12
13# Proposed functionality / feature additions:
14
15## Log setup needs to be less lame
16
17So Catalyst::Plugin::Log::* can die
18in a fire. Having $c->log_class would be a good start. kane volunteered
19to do some of this.
20
21Simple example: Catalyst::Plugin::Log::Colorful should just be a
22subclass of Catalyst::Log, no ::Plugin:: needed.
23
24See also: Catalyst::Plugin::Log::Dispatch and
25http://github.com/willert/catalyst-plugin-log4perl-simple/tree
26
27# REFACTORING
28
29aba7b9 29## PSGI
30
102e063c 31### Blockers
32
acbecf08 33 * Test all the options work on all of the scripts
f05b654b 34 * Fix nginx middlewares so that they are generic, or can somehow
eddb80f7 35 be used by people with their own .psgi files
8110f44e 36 * Fix a sane / nicer way to do custom engines.
102e063c 37
50a65bb3 38#### Script survey
39
40##### myapp_web_fastcgi.pl
41
42Looks to me like we are mapping --deamon to --detach but I think the modern Plack FCGI handler prefers --deamonize
43
44Although --pidfile is supported --pid seems to be preferred, and if we are bothering to map, why not map for the future?
45
46##### myapp_web_server.pl
47
48--fork, this gets passed and Plack doesn’t complain, but it doesn’t fork. Maybe we could just detect this switch and complain about it (say you should use plackup and Starman, for example?)
49
50--keepalive, passed, no complaint but doesn’t really seem to do anything.
51
52--pidfile, --background, these also seem to do nothing.
53
102e063c 54### Nice to have
55
f05b654b 56 * <@rafl> i've been thinking of maybe providing
57 MyApp->apply_default_middlewares($psgi_app)
8110f44e 58 * Capture arguments that the plack engine component was run with somewhere,
59 to more easily support custom args from scripts (e.g. Gitalist's
60 --git_dir)
29aba7b9 61 * throw away the restarter and allow using the restarters Plack provides
62 * remove per-request state from the engine instance
63 * be smarter about how we use PSGI - not every response needs to be delayed
64 and streaming
65
77d892df 66## The horrible hack for plugin setup - replacing it:
67
68 * Have a look at the Devel::REPL BEFORE_PLUGIN stuff
69 I wonder if what we need is that combined with plugins-as-roles
70
71## App / ctx split:
72
73 NOTE - these are notes that t0m thought up after doing back compat for
5d94e8f9 74 catalyst_component_class, may be inaccurate, wrong or missing things
77d892df 75 bug mst (at least) to correct before trying more than the first 2
76 steps. Please knock yourself out on the first two however :)
77
78 - Eliminate actions in MyApp from the main test suite
79 - Uncomment warning in C::C::register_action_methods, add tests it works
80 by mocking out the logging..
81 - Remove MyApp @ISA controller (ask metaclass if it has attributes, and if
82 so you need back compat :/)
83 - Make Catalyst::Context, move the per request stuff in there, handles from
84 main app class to delegate
85 - Make an instance of the app class which is a global variable
86 - Make new instance of the context class, not the app class per-request
87 - Remove the components as class data, move to instance data on the app
88 class (you probably have to do this for _all_ the class data, good luck!)
89 - Make it possible for users to spin up different instances of the app class
90 (with different config etc each)
91 - Profit! (Things like changing the complete app config per vhost, i.e.
92 writing a config loader / app class role which dispatches per vhost to
93 differently configured apps is piss easy)