[TODO]
- Convert internal representation of http request and response to PSGI.
[CHANGELOG]
2012-05-07 1.087
- Marking ASP4 and its entire ecosystem "DEPRECATED" until further notice.
2012-03-01 1.086
- Use of $api->get within a handler is disabled at this time.
2012-02-24 1.085
- Fixed ASP4::UserAgent to take advantage of new subrequest option.
- Use of the ASP4::API within an existing asp script, handler or request filter
is fully-functional now. Before, the behavior was unpredictable.
2012-02-24 1.084
- The Response->Redirect hack has been removed.
- Added concept of 'context->is_subrequest'
- this simplifies things a great deal.
- ->is_subrequest means that a subrequest context will not clobber ->current.
2012-02-24 1.083
- A wild Meta.json appeared in 1.082!
2012-02-24 1.082
- Response->Redirect after Response->TrapInclude was causing the redirect to fail.
- This release introduces a hack to fix it, by writing a meta tag to the client.
2012-02-13 1.081
- Updated logging of errors so that it outputs something interesting, instead
of a blank line.
- Running under mod_perl should now correctly support full RESTful interfaces.
2012-02-12 1.080
- Added support for multiple external "routes.json" files.
2012-02-07 1.079
- Errors output to the stderr are now derived directly from $@ not from any
parsed version of it.
2012-02-02 1.078
- Fixed installation problem that came up in v1.075
(compilation root was missing leading forward slash on non-windows systems).
2012-02-01 1.077
- Loath to add a mime-types-all-knowing dependency, we have a small list of
common mime-types (html, css, js, etc).
- Added mime for html and svg.
2012-02-01 1.076
- Now, the 'content-type' header is set correctly for ASP4::UserAgent responses.
- Works correctly under ASP4::PSGI (images, css, javascript all show up).
2012-02-01 1.075
- Now, works on Windows!
- eric.hayes++
2012-01-30 1.074
- Explicit calls to $Session->save() are no longer necessary.
2012-01-23 1.073
- Added $Request->Header($name)
(Somehow we've gotten along all this time without it.)
2012-01-23 1.072
- More tweaks on ASP4::SessionStateManager's default internal behavior
has resulted in some more-than-modest performance gains.
- Disabling session-state can result in 630 requests/second on a simple
master/child "content" page, and 475 requests/second on a page that
includes reading data from a database (using Class::DBI::Lite of course).
* Results from `ab` on a Dell E6510 (quad-dual-core-i7, 8GB RAM, Ubuntu 10.10)
2012-01-22 1.071
- ASP4::HTTPContext now triggers the SessionStateManager's save() method
when the context is DESTROY'd.
2012-01-22 1.070
- No longer check session's last-mod when deciding whether or not to save
session state at the end of a request.
2011-12-11 1.069
- Fixed META.yml to show the correct github url.
2011-12-10 1.068
- ASP4 is now hosted on github. https://github.com/jdrago999/ASP4
2011-12-01 1.067
- ASP4::GlobalASA is completely deprecated.
- ASP4::ErrorHandler contained a bug (cannot find method 'context'). Thanks
to ray.baksh++ for discovering it.
2011-11-16 1.066
- Fixed a POD error in ASP4::ErrorHandler::Remote.
- ASP4::ErrorHandler::Remote now correctly clones the error object before POSTing it.
2011-11-15 1.065
- Documented asp4-prep and asp4-deploy. These are deployment tools for ASP4 apps.
- Other POD updates here and there.
2011-11-15 1.064
- 1.063 was broken - please upgrade.
2011-11-15 1.063
- Stealth-mode ASP4::ErrorHandler::Remote will send your error messages to a
remote server via http.
- Added ASP4::Error
- Refactored ASP4::ErrorHandler to be more easily sub-classable.
- GlobalASA is now officially removed.
2011-11-13 1.062
- The httpd.conf produced by asphelper had an incorrect DocumentRoot. Fixed now.
2011-11-07 1.061
- asphelper now creates new ASP4 apps using the proper structure.
2011-11-06 1.060
- $Response->Include on a missing file will no longer result in a 404 on the
calling file. This goes for $Response->TrapInclude as well as <!-- #include virtual="..." -->
2011-11-05 1.059
- ASP4::API:
- No longer have to do this:
use ASP4::API;
my $api; BEGIN { $api = ASP4::API->new }
# Now load classes:
use MyApp::Foo;
- You can do this instead:
use ASP4::API;
use MyApp::Foo;
my $api = ASP4::API->new;
- Also no need for BEGIN { ASP4::API->init }
- Added requirement Data::Properties::JSON.
- JSON is a better format for test fixtures.
- YAML can still be used.
2011-10-31 1.058
- Added experimental deployment tools `asp4-prep` and `asp4-deploy`.
* asp4-prep does an `svn export` and then gzips the folder and prints the *.tar.gz filename.
* asp4-deploy decompresses the *.tar.gz, creates a symbolic link 'deploying'
to the new folder, copies the existing config files from latest/*/conf/*
(if it exists) or copies conf/*.template config files and renames them without
the *.template suffix. If a 'latest/*' folder was found, asp4-deploy will
run any unit tests found. If all tests pass, then 'deploying' is removed
and 'latest' is changed to point to the new folder.
- TODO: Add POD for asp4-prep and asp4-deploy. This is delayed until it's proven
that this is the correct way for onesie-twosie deployments.
2011-10-04 1.057
- Renamed @AppRoot@ macro to @ProjectRoot@ to avoid confusion with $Config->web->application_root
- Adjusted package declarations in some "stealth-mode" pm files because they have no POD yet.
2011-10-03 1.056
- Updated asphelper to include directives that disable mod_deflate and Apache2::Reload
for ASP4 websites. RayBaksh++
- This fixes the dreaded "This website uses an invalid form of compression" error
that you may have gotten after trying to $Response->Status(404) within an asp script.
- Added in-memory mock sessionstate handler for faster testing and easier installation.
2011-09-22 1.055
- Giving credit where credit is due :-)
- Erikdj++
- Added *experimental* memcached session storage backend.
2011-09-20 1.054
- Added @AppRoot@ macro for asp4-config.json. It is 1 folder "up" from @ServerRoot@.
- If your @ServerRoot@ is:
/home/bart/Projects/facebook/www
Then your @AppRoot@ is:
/home/bart/Projects/facebook
- Erikdj pointed out the need for the @AppRoot@ macro and suggested the (excellent) name. Thanks Erik!
2011-09-19 1.053
- Updated asphelper script to genenrate sample app conforming to new App::db::*
root namespace.
2011-09-19 1.052
[Bug Fixes]
- Blank lines in asp4-config.json no longer causes an exception to be thrown.
- Update documentation to reflect preference change from app::* to App::db::*
root namespace for database classes.
2011-08-14 1.051
[Bug Fixes]
- 'Redirect Loop' fixed! Under mod_perl, $context->send_headers() was not
called for non-200 http responses.
Now it is.
This means that if you had `return $Response->Redirect("/foo/")` in a RequestFilter
you may have gotten a "redirect loop" because although the '301 Moved' status
was set, the `location: /foo/` header was *not* set. This would result in
a redirect loop.
2011-07-11 v1.050
[Bug Fixes]
- v1.049 Caused script execution to cease after any $Response->Include or ssi
include finished.
- Upgrade required if you know what's good for you.
2011-07-09 v1.049
[Bug Fixes]
- v1.048 broke session cookies.
- Upgrade to v1.049 (quick).
2011-07-07 v1.048
[Bug Fixes]
- <% $Response->Status(404); return $Response->End; %> DID NOT WORK.
Instead it continued processing other ContentPlaceHolders. Now we check
to see if $Response->End was called before we process anything else.
- Still getting some "Content encoding error" messages from FF/Chrome/MSIE but
we're almost there.
2011-05-19 v1.047
[Bug Fixes]
- $Response->Expires("30M") wasn't documented. Now it is.
- $Response->Expires wasn't working properly. Now it is. (Always ended up with pre-epoch expiration times).
2011-05-03 v1.046
[Bug Fixes]
- $Response->Redirect(...) wasn't returning '301' - now it does.
2011-05-03 v1.045
[Bug Fixes]
- Actually it turned out that setting $Session->is_read_only(1) *DID* prevent
$Session->save() from working. This is now fixed to match the documentation.
2011-05-01 v1.044
[Bug Fixes]
- ASP4::ModPerl now does the Right Thing when a non-200 response is encountered.
- 500 response does not result in an "encoding error" in firefox.
- 200 (or 0 response) does the right thing.
- non-200 (and non-500) response does the right thing (eg: 401)
- ASP4::SessionStateManager now checks $s->is_changed *before* checking $s->{__lastMod} date
before deciding whether is should persist its changes in ->save().
[New Features]
- $Session->is_read_only(1) is new. Setting it to a true value (eg: 1) will prevent
the default behavior of calling $Session->save() at the end of each successful request.
2011-04-08 v1.043
- Documentation overhaul.
2011-03-23 v1.042
- Fixed sporadic error in master pages that looks like this:
Can't call method "Write" on an undefined value at /tmp/PAGE_CACHE/BStat/_masters_global_asp.pm line 1.
- Apparently $s->init_asp_objects($context) was not getting called before the
master page's run() method was called, resulting in a call to $Response->Write(...)
before $Response had been initialized.
2010-11-11 v1.041
- ASP4::UserAgent calls all cleanup handlers registered via $Server->RegisterCleanup(sub { }, @args)
at the end of each request, not when the ASP4::Mock::Pool object's DESTROY method is called.
This fixes a condition which caused conflict when a Class::DBI::Lite ORM is
used and the ASP4 application is executed via the `asp4` helper script.
2010-10-25 v1.040
- 1.039 introduced a bug that could cause session-id conflicts in the asp_sessions table.
- This release fixes that bug.
2010-10-25 v1.039
- Session expiration now happens exclusively on the server, not as the
result of an expiring session cookie.
2010-10-21 v1.038
- Another stab at getting http response codes right for errors.
2010-09-25 v1.037
- Added a couple tweaks here and there to make ASP4 run on Windows a little easier:
* $Config->web->page_cache_root now does the Right Thing on linux & win32.
* $Config->web->page_cache_root is automatically created if it does not exist.
2010-09-21 v1.036
- Added ASP4::StaticHandler to process requests for static files - like images, css, etc.
2010-09-17 v1.035
- It turns out that if you close the client socket, some browsers complain (Chrome).
Upgrade recommended.
2010-09-17 v1.034
- Non-2xx responses are more returned more correctly, albeit with empty bodies.
- HTTPHandler now caches the @ISA tree in RAM, offering a slight performance boost.
- Added missing '$r->headers_in' method to ASP4::Mock::RequestRec.
2010-05-26 v1.033
- Fixed more issues related to running multiple web applications under different
VirutalHosts on the same server. This time related to how Filters and Handlers
are cached - now not only by URL but also by $ENV{DOCUMENT_ROOT}.
2010-05-20 v1.032
- Fixed several issues related to running multiple web applications under different
VirtualHosts on the same server.
2010-05-19 v1.031
- Migrated from Ima::DBI to Ima::DBI::Contextual.
2010-05-18 v1.030
- $ENV{HTTP_HOST} is set to $r->hostname or $ENV{DOCUMENT_ROOT} in ASP4::ModPerl and ASP4::UserAgent, respectively.
2010-04-18 v1.029
- The document root was not always set properly in some very, very strange
circumstances.
- Upgrade recommended.
2010-04-18 v1.028
- $Request->Reroute($uri) no longer changes $ENV{REQUEST_URI} to $uri.
2010-04-15 v1.027
- ASP4::Request was not properly URLDecoding parameters. Now it does.
2010-04-13 v1.026
- Now both POST'ed and GET'ed parameters are added to $Form. This means that if
you...
<form action="/page/?foo=abc" method="post"><input name="bar" value="123" /></form>
...both foo=abc and bar=123 will be in $Form. Before this update, only bar=123 would
be there, and foo=abc would be lost.
2010-04-06 v1.025
- If Router::Generic is installed, ASP4::ConfigNode::Web will create $Config->web->router
based on the "routes" segment of asp4-config.json.
- No documentation about this yet.
2010-03-22 v1.024
- $Request->Reroute() with additional querystring parameters was not adding
those extra parameters to $Form. Now it does.
2010-03-08 v1.023
- ASP4::HTTPContext now checks to see if any RequestFilters match a uri before
returning a 404. This is helpful for SEO optimizations.
- New feature: $Request->Reroute("/new-uri/?foo=bar")
* Also very useful for SEO.
2010-03-08 v1.022
- asphelper's final instructions are now more clear and concise.
- Fixes a bug that caused active sessions to timeout as though inactive simply
because they were not changed before the timeout occurred. Now, $Session->save()
checks to see if it's been more than 60 seconds since the last time the __lastMod
was changed - and if it has been more than 60 seconds, the session is saved
and the __lastMod value is updated to time() - thus preventing expiry of
active sessions.
2010-03-08 v1.021
- Removed a warning that popped up now and then about the use of an uninitialized value.
- Added a more informative "Yay you're finished!" message after running asphelper.
2010-03-04 v1.020
- Now asphelper will output sbin/ddl.sql, which contains the structure of the
asp_sessions database table. This is a handy place to start describing the
database structure of a web application.
- If $Config->web->data_connections->session->session_timeout is set to '*' then
the session lasts as long as the browser keeps the cookie around.
- 20% performance increase by using Cwd::fastcwd() instead of Cwd::cwd() and a
few other minor tweaks.
2010-03-02 v1.019
- Fixed a bug in asphelper that caused some problems creating a skeleton website.
2010-03-01 v1.018
- Updated asphelper script so that the POD on CPAN is not contaminated with POD
from within one of the modules that asphelper generates.
- Now asphelper will not create a Class::DBI::Lite model class unless
Class::DBI::Lite is installed.
2010-03-01 v1.017
- Updated asphelper script to only accept options on the command-line, like "normal" scripts.
2010-02-28 v1.016
- A vestigial "use encoding 'utf8'" was removed from ASP4::Server.
- It was causing Apache to segfault on ubuntu 9.10.
2010-02-19 v1.015
- Hostnames like http://myapplication/ were not setting session cookies properly.
- $Config->data_connections->session->cookie_domain should set to "*" in these cases.
- $Response->SetCookie accepts the "*" value for domain also.
- The result is that no "domain=xyz" attribute is given to these cookies.
2010-02-18 v1.014
- $Response->ContentType now functions correctly.
- Upgrade mandatory!
2010-02-18 v1.013
- ASP4::HandlerResolver was not properly remembering timestamps on handler files.
This resulted in unnecessary reloads of handlers that had not been changed.
2010-02-18 v1.012
- MANIFEST was missing a few files that caused tests to fail.
2010-02-17 v1.011
! Upgrade Recommended !
- $Response->SetCookie and $Response->ContentType were not functioning properly.
- Added new method $Response->SetHeader.
2010-02-10 v1.010
! UPGRADE *SERIOUSLY* RECOMMENDED !
- In an environment with multiple VirtualHosts running ASP4 web applications,
ASP4::HandlerResolver's %HandlerCache and %FileTimes hashes were shared between
all VirtualHosts. This means that if you had 2 web apps (Foo and Bar) then
"/index.asp" on "Foo" might get handled by "Bar::_index_asp" or vice versa.
2010-02-08 v1.009
! Upgrade Recommended !
- ASP4::ModPerl sets $ENV{DOCUMENT_ROOT} = $r->document_root before doing
anything else.
- The scaffold website output by 'asphelper' had some minor bugs:
* email was sometimes referred to as email_address
* The error message for the 'message' field was displaying the wrong error.
2010-02-07 v1.008
- Multi-value form parameters (eg 3 checkboxes with the same name) will now
*correctly* appear as an arrayref in $Form, instead of 3 values joined with
a null byte.
2010-01-31 v1.007
- $FileUpload->SaveAs("/path/to/file.txt") will now create "/path" and "/path/to"
before writing "/path/to/file.txt".
2010-01-27 v1.006
- Sometimes changes in MasterPages are not immediately reflected in child pages.
This release attempts to correct this bug.
2010-01-25 v1.005
- Request Filters were not always matching properly
because of a regexp bug in ASP4::FilterResolver.
2010-01-22 v1.004
- $ENV{REQUEST_URI} was not getting set properly - this is now fixed.
2009-12-22 v1.003
- $ENV{HTTP_REFERER} can be set and preserved properly.
- conf/asp4-config.json will be reloaded if it is modified. This means that
the server does not have to be restarted for changes to asp4-config.json
to take effect.
- Added ASP4::TransHandler
2009-12-17 v1.002
- %ENV is no longer clobbered by ASP4::UserAgent.
2009-12-16 v1.001
- Fixed a bug that prevented ASP4 for reliably detecting when an ASP script
had been updated.
2009-12-15 v1.000
- Ready for production use.
2009-12-14 v0.001_03 .. v0.001_05
- Just getting the Makefile.PL prerequisites correct.
2009-12-13 v0.001_02
- Added POD.
2009-12-13 v0.001_01
* Initial release