Fork of WebGUI 7.10, maintained by Oqapi https://git.oqapi.nl/oqapi/webgui
Find a file
Scott Walters 72bac90f93 Rework WebGUI::Test::getPage2 to be a wrapper around WebGUI::Test::Mechanize; this is still just
a crutch for converting tests, though really, it's enough shorter that it probably should live on.
getPage should be deprecated and replaced with getPage2 which should then be renamed.  Joy.
Anyway, WebGUI::Test::Mechanize had a bit of chicken-and-egg going on with not being able to
modify things in its session until after a request with a valid session cookie was made.
It's now more forgiving.
Reworked t/Asset/AssetExportHtml.t slightly to use getPage2 as it currently stands.
2011-05-11 15:26:32 -04:00
docs Move the WebGUI 8 install docs to docs/install.txt but leave a brief 2011-04-27 20:02:27 -04:00
eg Add a missing newline. 2010-06-24 08:43:12 -07:00
etc remove the old asset manager from the config file 2011-05-04 13:00:33 -05:00
lib Rework WebGUI::Test::getPage2 to be a wrapper around WebGUI::Test::Mechanize; this is still just 2011-05-11 15:26:32 -04:00
sbin Doug and Colin did the work of removing all use of Class::InsideOut so now we can celebrate. 2011-05-05 21:43:06 -04:00
share PSGI entry points (#11632) -- add a plackMiddleware section to the config file; modify share/site.psgi to load from it. 2011-05-10 14:40:06 -04:00
t Rework WebGUI::Test::getPage2 to be a wrapper around WebGUI::Test::Mechanize; this is still just 2011-05-11 15:26:32 -04:00
www make the admin view [Edit] controls right-click-able so I can continue to right-click-open-in-new-tab them. 2011-05-10 14:40:06 -04:00
.gitignore Fixed #10967: Using a round bracket (parenthesis) in a macro. Unbalanced parentheses can now be escaped in macro calls using the backslash character. 2009-09-14 14:27:14 -04:00
.perltidyrc perltidyrc now placed where it can do the most good 2009-05-29 18:50:01 +00:00
.proverc adding proverc file 2010-06-13 06:15:34 -05:00
app.psgi Mount the app at the gateway, instead of at the root with downstream gateway handling. 2011-01-13 13:33:31 -08:00
asset_status.ods Add a sheet to track Roles. 2010-03-05 15:17:05 -08:00
benchmark.pl Logging fallback 2010-04-13 17:46:43 -04:00
README Move the WebGUI 8 install docs to docs/install.txt but leave a brief 2011-04-27 20:02:27 -04:00
TODO Minor improvements 2010-04-18 14:51:24 -04:00
WebGUI-Session-Plack.pm Added WebGUI::Requestion/Response 2010-04-06 19:35:06 -04:00

This is the PSGI branch of WebGUI8

To try this out:

 0) Start from WebGUI 7.10.4 or the example .conf and create.sql that comes with WebGUI 8
 1) Run testEnvironment.pl to install Plack
 2) Get a new wgd from http://haarg.org/wgd
 3) $ wgd reset --upgrade
 4) $ cd /data/WebGUI (or whereever you unpacked it)
 5) $ rsync -r -a (or cp -a) /data/WebGUI/www/extras /data/domains/www.example.com/public/
 6) $ export PERL5LIB='/data/WebGUI/lib:/data/WebGUI/t/lib'

To start it:

 7) $ plackup app.psgi

See docs/install.txt for more detailed installation instructions.

Currently, the best performance is achieved via:

 plackup -E none -s Starman --workers 10 --disable-keepalive

You can benchmark your server via:

 ab -t 3 -c 10 -k http://dev.localhost.localdomain:5000/ | grep Req

I'm currently getting 370 requests/second, whereas I'm getting 430/second on the non-PSGI WebGUI8 branch.

= ARCHITECTURE =

* The root level app.psgi file loads all the config files found and
  loads the site specific psgi file for each, linking them to the
  proper host names.
* The site psgi file uses the WEBGUI_CONFIG environment variable to find the config.
* It instantiates the $wg WebGUI object (one per app).
* $wg creates and stores the WebGUI::Config (one per app)
* $wg creates the $app PSGI app code ref (one per app)
* WebGUI::Middleware::Session is wrapped around $app at the outer-most layer so that it can open and
  close the $session WebGUI::Session. Any other wG middleware that needs $session should go in between
  it and $app ($session created one per request)
* $session creates the $request WebGUI::Session::Request and $response WebGUI::Session::Response
  objects (one per request)