TurboGears: extensiones de escritura
Las extensiones de TurboGears se identifican mediante tgext.* package. Un kit de herramientas de Gearbox proporciona un comando tgext para crear una extensión de muestra. Por ejemplo
gearbox tgext -n myextension
Otros parámetros opcionales para este comando son:
--author - nombre del autor del paquete.
--email - correo electrónico del autor del paquete.
--licence- licencia utilizada para el paquete. El valor predeterminado es MIT.
--description - Descripción del paquete.
--keywords - Palabras clave del paquete (predeterminado: turbogears2.extension).
Esto creará un directorio tgext.myextension, que tiene una extensión de muestra simple en su interior.
Run the setup.py dentro del directorio -
Python setup.py install
los _init_.py archivo dentro tgext/myextension carpeta contiene -
Plugme function - Este es el punto de entrada de la extensión.
SetupExtension class - La inicialización de la extensión tiene lugar aquí.
On_startup function - dentro de la clase hay un gancho registrado en la función __call__ dentro de la clase.
Breve versión del tgext\myextension\__init__.py.
from tg import config
from tg import hooks
from tg.configuration import milestones
import logging
log = logging.getLogger('tgext.myextension')
def plugme(configurator, options = None):
if options is None:
options = {}
log.info('Setting up tgext.myextension extension...')
milestones.config_ready.register(SetupExtension(configurator))
return dict(appid='tgext.myextension')
class SetupExtension(object):
def __init__(self, configurator):
self.configurator = configurator
def __call__(self):
log.info('>>> Public files path is %s' % config['paths']['static_files'])
hooks.register('startup', self.on_startup)
def echo_wrapper_factory(handler, config):
def echo_wrapper(controller, environ, context):
log.info('Serving: %s' % context.request.path)
return handler(controller, environ, context)
return echo_wrapper
self.configurator.register_wrapper(echo_wrapper_factory)
def on_startup(self):
log.info('+ Application Running!')
Una vez instalada la extensión, actívela haciendo las siguientes adiciones en la aplicación app_cfg.py archivo de configuración.
from tgext.myextension import plugme
plugme(base_config)
Si iniciamos el servidor usando un comando del servidor de caja de cambios, la notificación de una extensión recién registrada se puede ver en la consola de la siguiente manera:
14:29:13,250 INFO [tgext.myextension] Setting up tgext.myextension extension...
14:29:13,453 INFO [tgext.myextension] >>> Public files path is c:\tghello\hello\hello\public
14:29:13,453 INFO [tgext.myextension] + Application Running!
Starting Standard HTTP server on http://127.0.0.1:8080