Skip to main content

A bunch of helpers for successfully running Pyramid on Heroku.

Project description

pyramid_heroku
================

------------
Introduction
------------

pyramid_heroku is a collection of tweens and helpers to successfully run `Pyramid <http://www.trypyramid.com/>`_ on `Heroku <https://heroku.com/>`_

It provides the following:

* ``ClientAddr`` tween that sets real user's IP to ``request.client_addr``
* ``HerokuappAccess`` tween that denies access to your app's
``<app>.herokuapp.com`` domain for any non-whitelisted IPs.
* ``migrate.py`` script for automatically running alembic migrations on
deploy.

------------
Installation
------------

Just do

``pip install pyramid_heroku``

or

``easy_install pyramid_heroku``

-------------
Compatibility
-------------

pyramid_heroku runs with pyramid>=1.7 and python>=2.7 and python>=3.5.
Other versions might also work.

-------------
Documentation
-------------

Usage example for tweens::

def main(global_config, **settings):$ cat .heroku/release.sh
config = Configurator(settings=settings)
config.include('pyramid_heroku.client_addr')
config.include('pyramid_heroku.herokuapp_access')
return config.make_wsgi_app()

The `pyramid_heroku.herokuapp_access` tween depends on
`pyramid_heroku.client_addr` tween and it requires you to list whitelisted IPs
in the `pyramid_heroku.herokuapp_whitelist` setting.

Usage example for automatic alembic migration script::

$ cat .heroku/release.sh
#!/usr/bin/env bash

set -e

echo "Running migrations"
python -m pyramid_heroku.migrate my_app etc/production.ini app:main

echo "DONE!"

For migration script to work, you need to set the ``MIGRATE_API_SECRET_HEROKU``
env var in Heroku. This allows the migration script to use the Heroku API.

See tests for more examples.

If you use structlog, add the following configuration setting to your INI file to enable structlog-like logging::

pyramid_heroku.structlog = true


Releasing
---------

#. Update CHANGES.rst.
#. Update setup.py version.
#. Run ``bin/longtest``.
#. Run ``python setup.py sdist upload``.

We're hiring!
=============

At Niteo we regularly contribute back to the Open Source community. If you do too, we'd like to invite you to `join our team
<https://niteo.co/careers/>`_!

=======
Changes
=======

0.1.4
-----

* Fix return value in migrate.shell. `subprocess.check_output` changed in
python 3.6 and is now returning byte and not str.
[karantan]

0.1.3
-----

* Provided default values for migrate.py - https://github.com/niteoweb/pyramid_heroku/issues/2
[enkidulan]

0.1.2
-----

* The request.client_addr cannot be set directly, so we need to go around.
[zupo]


0.1.1
-----

* Fix tween paths.
[zupo]


0.1
---

* Initial release.
[dz0ny, zupo]

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyramid_heroku-0.1.4.tar.gz (6.5 kB view details)

Uploaded Source

File details

Details for the file pyramid_heroku-0.1.4.tar.gz.

File metadata

File hashes

Hashes for pyramid_heroku-0.1.4.tar.gz
Algorithm Hash digest
SHA256 6659bfca7c5c2a7a857641c7c38c1bad76367689705a32f16d1fe64d7c634b29
MD5 26e6e2361dd676ce7075300a7c0e1b56
BLAKE2b-256 e102f38bace5fc1db23aecc635f626fccc2dfbef74e4c670e7471cac4d2d6bf4

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page