ACS Developer Support

part of the ArsDigita Community System, by Jon Salz

The Big Picture

Software development is a big feedback loop: a developer writes something, tests it, and then repeats until the results are satisfactory. It's important to streamline this cycle by having a development environment which makes it easy to analyze what the software is doing under the hood.

Peeking Under the Hood

Our development environment previously consisted largely of Emacs, and tail -f /web/servername/log/servername-error.log. Now this has been augmented: ad_footer and ad_admin_footer now display a link entitled Developer Information. (You can use the ds_link procedure to generate the link yourself.) Following the link displays a screenful of information including:

In addition, the ClientDebug facility of AOLserver 2 has been re-implemented in the abstract URL system (which serves nearly all non-static pages). If an error occurs while serving a page, a stack trace is printed out.

Note that these nifty features pop up only when you are logged in as a site-wide administrator! Revealing this information to anyone else would pose a huge security risk.

Comments

Tired of using ns_log to instrument your code, then grokking the error log to see what's wrong with your page? Use the ds_comment routine instead:
ds_comment "Foo is $foo"
Your comment will show up at the bottom of the page, beneath the Developer Information link (but only for site-wide administrators). It will also be displayed on the Developer Information page itself.

Comments are displayed even if an error occurs in the page!

Enabling It

Load the packate acs-developer-support via package manager, browse to /ds and enable the desired options.

Be careful of you enable developer support on busy production systems - they probably incur a performance hit.

How It Works

The security subsystem registers preauth and trace filters which store relevant connection information in shared variables (nsvs). The security subsystem also renames the AOLserver ns_db procedure and registers a wrapper which aggregates information about database queries.

Example output of ACS Developer Support.

Release Notes

Please file bugs in the Bug Tracker.


jsalz@mit.edu

Last Modified: $‌Id: index.html,v 1.2 2017/08/07 23:47:56 gustafn Exp $