summaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
authorChris McDonough <chrism@agendaless.com>2010-04-25 17:04:02 +0000
committerChris McDonough <chrism@agendaless.com>2010-04-25 17:04:02 +0000
commit7c525f127cee96a749e15b6ba2dfbc5379825178 (patch)
tree9b54b73c791484ddd13bb9613c0f8209f050323c /docs
parenteac892170c9d1e889f2462dc59fe1a9b2b33c239 (diff)
downloadpyramid-7c525f127cee96a749e15b6ba2dfbc5379825178.tar.gz
pyramid-7c525f127cee96a749e15b6ba2dfbc5379825178.tar.bz2
pyramid-7c525f127cee96a749e15b6ba2dfbc5379825178.zip
- It is now possible to turn on Chameleon template "debugging mode"
for all Chameleon BFG templates by setting a BFG-related Paster ``.ini`` file setting named ``debug_templates``. The exceptions raised by Chameleon templates when a rendering fails are sometimes less than helpful. ``debug_templates`` allows you to configure your application development environment so that exceptions generated by Chameleon during template compilation and execution will contain more helpful debugging information. This mode is on by default in all new projects.
Diffstat (limited to 'docs')
-rw-r--r--docs/narr/MyProject/MyProject.ini1
-rw-r--r--docs/narr/project.rst15
-rw-r--r--docs/narr/templates.rst69
-rw-r--r--docs/whatsnew-1.3.rst10
4 files changed, 95 insertions, 0 deletions
diff --git a/docs/narr/MyProject/MyProject.ini b/docs/narr/MyProject/MyProject.ini
index 38cbf879c..6741af913 100644
--- a/docs/narr/MyProject/MyProject.ini
+++ b/docs/narr/MyProject/MyProject.ini
@@ -6,6 +6,7 @@ use = egg:MyProject#app
reload_templates = true
debug_authorization = false
debug_notfound = false
+debug_templates = true
default_locale_name = en
[server:main]
diff --git a/docs/narr/project.rst b/docs/narr/project.rst
index dfac238b5..97df8a28c 100644
--- a/docs/narr/project.rst
+++ b/docs/narr/project.rst
@@ -233,6 +233,8 @@ section within the ``.ini`` file. For example, if your application
reload_templates = true
debug_authorization = false
debug_notfound = false
+ debug_templates = true
+ default_locale_name = en
If so, you can use the following command to invoke a debug shell using
the name ``main`` as a section name:
@@ -279,6 +281,8 @@ following ``.ini`` file content:
reload_templates = true
debug_authorization = false
debug_notfound = false
+ debug_templates = true
+ default_locale_name = en
[pipeline:main]
pipeline = egg:repoze.tm2#tm
@@ -534,6 +538,17 @@ detected. See :ref:`reload_templates_section` for more information.
production applications, as template rendering is slowed when it is
turned on.
+The ``debug_templates`` setting in the ``[app:main]`` section is a
+:mod:`repoze.bfg` -specific setting which is passed into the
+framework. If it exists, and its value is ``true``, :term:`Chameleon`
+template exceptions will contained more detailed and helpful
+information about the error than when this value is ``false``. See
+:ref:`debug_templates_section` for more information.
+
+.. warning:: The ``debug_templates`` option should be turned off for
+ production applications, as template rendering is slowed when it is
+ turned on.
+
Various other settings may exist in this section having to do with
debugging or influencing runtime behavior of a :mod:`repoze.bfg`
application. See :ref:`environment_chapter` for more information
diff --git a/docs/narr/templates.rst b/docs/narr/templates.rst
index 23a1460a1..fc0f38b0f 100644
--- a/docs/narr/templates.rst
+++ b/docs/narr/templates.rst
@@ -501,6 +501,75 @@ application's configuration section, e.g.::
use = egg:MyProject#app
reload_templates = true
+.. _debug_templates_section:
+
+Nicer Exceptions in Templates
+-----------------------------
+
+The exceptions raised by Chameleon templates when a rendering fails
+are sometimes less than helpful. :mod:`repoze.bfg` allows you to
+configure your application development environment so that exceptions
+generated by Chameleon during template compilation and execution will
+contain nicer debugging information.
+
+.. warning:: template-debugging behavior is not recommended for
+ production sites as it slows renderings; it's usually
+ only desirable during development.
+
+In order to turn on template exception debugging, you can use an
+environment variable setting or a configuration file setting.
+
+To use an environment variable, start your application under a shell
+using the ``BFG_DEBUG_TEMPLATES`` operating system environment
+variable set to ``1``, For example::
+
+ $ BFG_DEBUG_TEMPLATES=1 bin/paster serve myproject.ini
+
+To use a setting in the application ``.ini`` file for the same
+purpose, set the ``debug_templates`` key to ``true`` within the
+application's configuration section, e.g.::
+
+ [app:main]
+ use = egg:MyProject#app
+ debug_templates = true
+
+With template debugging off, a :exc:`NameError` exception resulting
+from rendering a template with an undefined variable
+(e.g. ``${wrong}``) might end like this::
+
+ File "/home/fred/env/lib/python2.5/site-packages/Chameleon-1.2.3-py2.5.egg/chameleon/core/utils.py", line 332, in __getitem__
+ raise NameError(key)
+ NameError: wrong
+
+Note that the exception has no information about which template was
+being rendered when the error occured. But with template debugging
+on, an exception resulting from the same problem might end like so::
+
+ RuntimeError: Caught exception rendering template.
+ - Expression: ``wrong``
+ - Filename: /home/fred/env/bfgzodb/bfgzodb/templates/mytemplate.pt
+ - Arguments: renderer_name: bfgzodb:templates/mytemplate.pt
+ template: <PageTemplateFile - at 0x1d2ecf0>
+ xincludes: <XIncludes - at 0x1d3a130>
+ request: <Request - at 0x1d2ecd0>
+ project: bfgzodb
+ macros: <Macros - at 0x1d3aed0>
+ context: <MyModel None at 0x1d39130>
+ view: <function my_view at 0x1d23570>
+
+ NameError: wrong
+
+The latter tells you which template the error occurred in, as well as
+displaying the arguments passed to the template itself.
+
+.. note::
+
+ Turning on ``debug_templates`` has the same effect as using the
+ Chameleon environment variable ``CHAMELEON_DEBUG``. See `Chameleon
+ Environment Variables
+ <http://chameleon.repoze.org/docs/latest/config.html#environment-variables>`_
+ for more information.
+
.. index::
single: template internationalization
single: internationalization (of templates)
diff --git a/docs/whatsnew-1.3.rst b/docs/whatsnew-1.3.rst
index e8f2ddcdd..32964973d 100644
--- a/docs/whatsnew-1.3.rst
+++ b/docs/whatsnew-1.3.rst
@@ -105,6 +105,16 @@ Minor Feature Additions
that user-defined decorators can be defined and found during
:mod:`repoze.bfg` scanning.
+- It is now possible to turn on Chameleon template "debugging mode"
+ for all Chameleon BFG templates by setting a BFG-related Paster
+ ``.ini`` file setting named ``debug_templates``. The exceptions
+ raised by Chameleon templates when a rendering fails are sometimes
+ less than helpful. ``debug_templates`` allows you to configure your
+ application development environment so that exceptions generated by
+ Chameleon during template compilation and execution will contain
+ more helpful debugging information. This mode is on by default in
+ newly generated projects. See also :ref:`debug_templates_section`.
+
Backwards Incompatibilites
--------------------------