部署到Heroku时不运行collectstatic命令,但设置完全正常

时间:2016-01-07 09:28:05

标签: django heroku collectstatic

我已经验证的事情:

  • 我的collectstatic目录(是的,我称之为,以减少对static源目录的干扰)在我的仓库中(通过.gitkeep文件)(如heroku documentation
  • heroku run python manage.py collectstatic --dry-run --noinput有效(建议here
  • collectstatic 强制禁用:heroku config:add DISABLE_COLLECTSTATIC=0
  • 我正在推送一个新的提交(所以heroku实际上正在部署)

仍然,collectstatic未运行。我还能检查什么?

修改

另外,我在STATIC_ROOT中正确定义了settings.py。相关部分如下:

STATIC_URL = '/static/'

STATIC_ROOT = os.path.join(BASE_DIR, 'collectstatic/')

STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'static'),
)

EDIT2

我安装的应用只是股票django 1.9:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

EDIT3

有一件事我必须提及,这可能是相关的:DISABLE_COLLECTSTATIC之前被设置为1(因此被强制禁用)对于这个一个heroku应用程序,但我已经确定它现在设置为0。

Heroku中的错误可能会阻止它使用最新值?我想检查这个的唯一方法是创建一个新的heroku应用程序。

1 个答案:

答案 0 :(得分:0)

所以,不知道发生了什么,但是创建一个新的Heroku实例并使用空配置推送它实际上是触发了collectstatic。

我怀疑Heroku没有正确评估对DISABLE_COLLECTSTATIC的更改。

修改

实际上,似乎DISABLE_COLLECTSTATIC=0 会阻止collectstatic运行。要确保收集静止运行,请执行以下操作:

heroku config:unset DISABLE_COLLECTSTATIC

我会说Heroku documentation有点令人困惑,因为它似乎意味着DISABLE_COLLECTSTATIC=0实际上会运行collectstatic - 但事实并非如此。