On Thu, 2002-01-17 at 12:54, Roger wrote:
> While debugging a silly mistake, I discovered a convenient way to reload
> my SitePage to incorporate coding changes during my testing.

I also find OneShot.cgi to be too slow for testing, perhaps because I have a
relatively slow machine.  In any case, I modified WebKit.cgi (which is run on
every request) to first look for changes in my source tree, and
restart the appserver if there were any changes made.  That way I have a delay
on the first request after making a change, but for subsequent pages it's
almost as fast as WebKit.

I had to allow the www-data user (under which cgi runs on my machine) write
permissions to my app directory, so that it can create a timestamp and write
to the log file.

Here's the source, hope it's useful:


#!/usr/bin/env python

# If the Webware installation is located somewhere else,
# then set the WebwareDir variable to point to it.
# For example, WebwareDir = '/Servers/Webware'
WebwareDir = '/home/jdhildeb/projects/Webware'

# If you used the MakeAppWorkDir.py script to make a separate
# application working directory, specify it here.
AppWorkDir = '/home/jdhildeb/projects/mobile/app'


try:
        import os, sys

    # mod starts here

        file = os.popen("cd %s ; find . -name '*.py' -newer timestamp" % ( AppWorkDir 
) , "r" )
        output = file.readlines()
        file.close()
        if len(output) > 0:
                os.system("cd %s; kill `cat appserverpid.txt` ; touch timestamp; sleep 
1 ; ./AppServer &>appserver.log &" % AppWorkDir )

    # mod ends here

        if WebwareDir:
                sys.path.insert(1, WebwareDir)
        else:
                WebwareDir = os.path.dirname(os.getcwd())
        webKitDir = os.path.join(WebwareDir, 'WebKit')
        if AppWorkDir is None:
                AppWorkDir = webKitDir
        else:
                sys.path.insert(1, AppWorkDir)

        import WebKit.CGIAdapter
        WebKit.CGIAdapter.main(AppWorkDir)
except:
        import string, sys, traceback
        from time import asctime, localtime, time

        sys.stderr.write('[%s] [error] WebKit: Error in adapter\n' % 
asctime(localtime(time())))
        sys.stderr.write('Error while executing script\n')
        traceback.print_exc(file=sys.stderr)

        output = apply(traceback.format_exception, sys.exc_info())
        output = string.join(output, '')
        output = string.replace(output, '&', '&')
        output = string.replace(output, '<', '&lt;')
        output = string.replace(output, '>', '&gt;')
        output = string.replace(output, '"', '&quot;')
        sys.stdout.write('''Content-type: text/html

<html><body>
<p>ERROR
<p><pre>%s</pre>
</body></html>\n''' % output)


_______________________________________________
Webware-discuss mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/webware-discuss

Reply via email to