Skip to content

Instantly share code, notes, and snippets.

@mmerickel
Last active May 4, 2017 23:33
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mmerickel/517ad18044c3eb5e68078c28da3ebf92 to your computer and use it in GitHub Desktop.
Save mmerickel/517ad18044c3eb5e68078c28da3ebf92 to your computer and use it in GitHub Desktop.
pyramid on heroku
#!/bin/bash
if [ "$1" = 'run' ]; then
shift
render-config site.ini.in site.ini
exec $@
fi
# override the entrypoint script and execute the command
exec "$@"
release: ./entrypoint.sh run alembic -c site.ini upgrade head
web: ./entrypoint.sh run pserve site.ini
import argparse
import jinja2
import os
def main():
parser = argparse.ArgumentParser()
parser.add_argument('template')
parser.add_argument('output')
args = parser.parse_args()
env = jinja2.Environment(
loader=jinja2.FileSystemLoader(os.getcwd()),
undefined=jinja2.StrictUndefined,
)
template = env.get_template(args.template)
result = template.render({
'env': os.environ,
})
with open(args.output, 'w', encoding='utf8') as fp:
fp.write(result)
[db]
url = {{ env.DATABASE_URL }}
pool_recycle = 3600
engine_id = myapp
[alembic]
script_location = myapp.model:migrations
file_template = %%(rev)s_%%(slug)s
[app:front]
use = egg:myapp#front
tm.annotate_user = no
retry.attempts = 3
jinja2.trim_blocks = yes
jinja2.lstrip_blocks = yes
pyramid.reload_assets = false
pyramid.reload_templates = false
pyramid.debug_authorization = false
pyramid.debug_notfound = false
pyramid.debug_routematch = false
pyramid.default_locale_name = en
auth.cookie_name = auth_token
auth.secret = {{ env.AUTH_SECRET }}
auth.secure = yes
session.cookie_name = session
session.salt = session
session.secret = {{ env.SESSION_SECRET }}
session.secure = yes
support_email = {{ env.SUPPORT_EMAIL | default("support@example.com") }}
static_pkg = myapp.web:static
[filter:tracker]
use = egg:request-id
format = {status} {REQUEST_METHOD:<6} {REQUEST_PATH:<40} {REQUEST_ID}
exclude_prefixes =
/static
[composite:dev-platform]
use = egg:rutter#urlmap
/ = front
[pipeline:main]
pipeline =
egg:PasteDeploy#prefix
tracker
dev-platform
[server:main]
use = egg:waitress#main
host = 0.0.0.0
port = {{ env.PORT }}
[loggers]
keys = root, alembic, sqlalchemy, myapp, translogger
[handlers]
keys = console, translogger
[formatters]
keys = generic, minimal
[logger_root]
level = INFO
handlers = console
[logger_alembic]
level = INFO
handlers =
qualname = alembic
[logger_sqlalchemy]
level = WARN
handlers =
qualname = sqlalchemy
[logger_myapp]
level = DEBUG
handlers =
qualname = myapp
[logger_translogger]
level = INFO
handlers = translogger
qualname = request_id
propagate = 0
[handler_console]
class = StreamHandler
args = (sys.stderr,)
level = NOTSET
formatter = generic
[handler_translogger]
class = StreamHandler
args = (sys.stderr,)
level = NOTSET
formatter = minimal
[formatter_generic]
format = %(asctime)s %(levelname)-5.5s [%(name)s][%(threadName)s] %(message)s
[formatter_minimal]
format = %(message)s
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment