Source code for ramverk.paver
from __future__ import absolute_import
from paver.easy import options, Bunch, task, cmdopts
from werkzeug.utils import import_string
options.ramverk = Bunch()
options.serve = Bunch(hostname='localhost',
port=8008,
no_reloader=False,
no_debugger=False,
no_evalex=False,
debug=True)
@task
@cmdopts([('port=', 'p', 'override default ({port})'.format(**options.serve)),
('no-reloader', 'R', 'disable the reloader'),
('no-debugger', 'D', 'disable the debugger'),
('no-evalex', 'E', 'disable exception evaluation')])
[docs]def serve():
"""Run a development server."""
from logbook.compat import redirect_logging
from werkzeug import _internal
redirect_logging()
appfactory = import_string(options.ramverk.app)
opts = options.serve
app = appfactory(debug=opts.debug)
app.log_handler.push_application()
def _log(type, message, *args, **kwargs):
getattr(app.log, type)(message % args % kwargs)
_internal._log = _log
from werkzeug.serving import run_simple
run_simple(opts.hostname, int(opts.port), app,
use_reloader = not opts.no_reloader,
use_debugger = not opts.no_debugger,
use_evalex = not opts.no_evalex)
@task
[docs]def shell():
"""Enter a bpython shell set up for the app."""
from bpython import embed
from werkzeug.test import create_environ
appfactory = import_string(options.ramverk.app)
app = appfactory()
app.bind_to_environ(create_environ())
embed(dict(app=app))