heroku / heroku/buildpacks-python

Support disabling automatic Django static asset generation

Open
#109 1 comment 0 reactions 0 assignees View on GitHub
classic buildpack parity
Dominant language
Rust
Stars
33
Forks
3
Avg merge
12h 51m
Merged PRs (30d)
9

Description

Automatic Django static asset generation (running the `manage.py collectstatic` command) was added in #108.

At the moment there is no way to force disable the feature (beyond removing `django.contrib.staticfiles` from `INSTALLED_APPS` in the app's Django config, or removing the `manage.py` script), whereas the classic Python buildpack allows disabling it using `DISABLE_COLLECTSTATIC=1`.

That said, the new implementation performs more thorough checks to see whether the app is using the static files feature, so between that and a few other improvements (like now passing env vars to the subprocess), there should be fewer cases where the feature needs manually disabling.

Some scenarios in which the ability to disable might be needed:
* the user needs to run a step between Python package installation and running collectstatic (such as patching invalid urls in CSS comments to work around https://code.djangoproject.com/ticket/21080)
* the user can't debug a failure locally or at build time, and wants the build to succeed so they can debug at runtime

If we decide we should still add support for disabling automatic Django static asset generation, then we should probably use config options in `project.toml` rather than env vars (to encourage infrastructure as code). However, this depends on us figuring out a convention there for all of our buildpacks.

Either way, we'll also need to add deprecation (or error) messages if `DISABLE_COLLECTSTATIC` is set (or if `.heroku/collectstatic_disabled` exists), to warn that it no longer does anything (for people migrating from the classic buildpack).

GUS-W-14109400.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.