Skip to content

Support disabling automatic Django static asset generation #109

Open
@edmorley

Description

@edmorley

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    classic buildpack parityFeatures required for parity with the classic Heroku Python buildpack

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions