Metadata-Version: 1.1
Name: pyramid_raven
Version: 0.2.2
Summary: Integrate raven and raven-js with a Pyramid web application.
Home-page: http://github.com/thruflo/pyramid_raven
Author: James Arthur
Author-email: username: thruflo, domain: gmail.com
License: This is free and unencumbered software released into the public domain.
Description: `pyramid\_raven <https://github.com/thruflo/pyramid_raven>`__ integrates
        the `raven python client <http://raven.readthedocs.org/en/latest>`__ and
        `raven-js <http://raven-js.readthedocs.org/en/latest>`__ with a
        `Pyramid <http://pyramid.readthedocs.org>`__ web application. It
        provides a configured `raven
        client <http://raven.readthedocs.org/en/latest/usage.html#raven.base.Client>`__
        at ``request.raven`` and a
        `pyramid\_layout <http://pyramid_layout.readthedocs.org/en/latest/>`__
        panel called ``raven-js``.
        
        Raven has `built in support for Pyramid
        applications <http://raven.readthedocs.org/en/latest/config/pyramid.html>`__
        via a Paste filter and logging handler.
        `pyramid\_raven <https://github.com/thruflo/pyramid_raven>`__ is an
        alternative integration, useful when:
        
        1. you handle exceptions within your application -- i.e.: you register a
           catch all ``Exception`` view that renders an error page within your
           application, thus preventing errors reaching the WSGI pipeline
        2. you also want to log javascript errors
        
        Setup
        -----
        
        Install using `pip <http://www.pip-installer.org>`__:
        
        ::
        
            pip install pyramid_raven
        
        Configure Raven DSN address in the INI configuration of your
        application:
        
        ::
        
            raven.dsn = https://xxx:yyy@sentry.example.com/1
        
        ... or provide a `SENTRY\_DSN environment
        variable <http://raven.readthedocs.org/en/latest/config/index.html#the-sentry-dsn>`__:
        
        ::
        
            SENTRY_DSN=http://public:secret@example.com/1
        
        `Configure your
        application <http://docs.pylonsproject.org/projects/pyramid/en/latest/narr/configuration.html>`__
        to include the package:
        
        ::
        
            config.include('pyramid_raven')
        
        Configure
        ---------
        
        Any ``raven.*`` namespaced settings in your ``.ini`` `configuration
        file <http://docs.pylonsproject.org/projects/pyramid/en/latest/narr/paste.html>`__
        will be passed to the `raven
        client <http://raven.readthedocs.org/en/latest/usage.html#raven.base.Client>`__
        constructor -- although it's your responsibility to coerce them to the
        right type, e.g.:
        
        ::
        
            raven.timeout=3
        
        You can augment the (already fairly comprehensive set of) request
        attributes sent with the logged server side exceptions by adding space
        seperated request property or method names (called with no args) to:
        
        ::
        
            pyramid_raven.additional_request_properties=foo bar
            pyramid_raven.additional_request_methods=baz bam
        
        You can also override the panel template:
        
        ::
        
            pyramid_raven.panel_tmpl=mypkg:templates/foo.tmpl
        
        Use
        ---
        
        You can use it to record server side errors:
        
        ::
        
            @view_config(context=Exception)
            def system_error_view(context, request):
                """Example catch all exception handler."""
                
                # Notify sentry.
                request.raven.captureException()
                
                # XXX E.g.: render error page.
                # ...
        
        Client side JavaScript errors
        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        
        Client side error tracking requires that you have
        `pyramid\_layout <http://pyramid-layout.readthedocs.org/>`__ configured
        before ``pyramid_raven``.
        
        And client side errors:
        
        ::
        
            <!-- in production, in the head of your main layout, above all other js -->
            ${panel('raven-js')}
        
        E.g.: then in any of your subsequently loaded scripts:
        
        ::
        
            throw new Error('This javascript error will be logged.')
        
        Note that if you load your scripts from an external domain (e.g.: from a
        CDN) then errors will not be logged by many browsers, due to cross
        origin security (not leaking information across domains). You can
        workaround this `using CORS <http://enable-cors.org/>`__ but browser
        support is, at the time of writing, wobbly to say the least.
        
        Tests
        -----
        
        To run the tests, ``pip install nose coverage mock`` and e.g.:
        
        ::
        
            $ nosetests --with-doctest --with-coverage --cover-tests --cover-package pyramid_raven pyramid_raven
            ......
            Name                      Stmts   Miss  Cover   Missing
            -------------------------------------------------------
            pyramid_raven                 9      0   100%   
            pyramid_raven.client         69      0   100%   
            pyramid_raven.constants       5      0   100%   
            pyramid_raven.panel          39      0   100%   
            -------------------------------------------------------
            TOTAL                       122      0   100%   
            ----------------------------------------------------------------------
            Ran 6 tests in 0.143s
        
            OK
        
Platform: UNKNOWN
Classifier: Development Status :: 3 - Alpha
Classifier: Environment :: Web Environment
Classifier: Intended Audience :: Developers
Classifier: License :: Public Domain
Classifier: Natural Language :: English
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 2.6
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.2
Classifier: Framework :: Pylons
Classifier: Topic :: Internet :: WWW/HTTP
Classifier: Topic :: Internet :: WWW/HTTP :: WSGI
Classifier: Topic :: Software Development :: Libraries :: Python Modules
