В двух словах проблема в том, что в режиме разработки мы вносим изменения в файлы CSS или JS, но всегда получаем кэшированные / старые версии этих файлов. Ничто из того, что я сделал, не имело никакого эффекта. Я проверял конфигурацию десятки раз и пробовал каждую комбинацию значений конфигурации, но всегда получал одинаковые результаты: устаревшие / кэшированные файлы. Я должен был на самом деле работать в производственном режиме и перезапускать сервер после каждого изменения, чтобы проверить.
Я потратил несколько дней на то, чтобы разобраться с этой проблемой, посмотрел на десятки вопросов о переполнении стека в конвейере ресурсов, но так и не нашел того, который касался этого вопроса, поэтому я решил опубликовать его здесь для потомков.
Мы используем Heroku и прекомпилируем наши ресурсы, потому что Heroku не может выполнить предварительную компиляцию для нас (мы также используем devise, который, очевидно, является причиной сбоя предварительной компиляции heroku). Поэтому, чтобы отправить наши предварительно скомпилированные активы в Heroku, мы должны проверить их на git.
Вот проблема .
Когда мы обновились до Rails 3.1.1 , прекомпиляция ресурса произвела файлы как с хешем MD5 в имени, так и без него. Я не особо задумывался над этим и пошел дальше и проверил все эти файлы, чтобы я мог подтолкнуть Герою. Некоторое время спустя я заметил проблему с кэшированными результатами в режиме разработки. Предварительно скомпилированные и проверенные ресурсы без хэшей MD5 обслуживались из / public / assets как статические файлы, что не позволяло нам видеть какие-либо изменения, которые мы вносили в /app/assets.
.
После того, как я наконец понял это, я запустил git rm / public / assets и все снова работает. Итак, вывод: Будьте внимательны, проверяя активы в git!
Чтобы превратить это в вопрос: как это делают другие? Я что-то упускаю из виду? Что мне действительно нужно, так это чтобы Heroku предварительно скомпилировал мои ресурсы для меня, но это происходит из-за ошибки соединения с БД, которую я собираю из-за устройства. Я надеялся, что Rails 3.1.1 это исправит, но это не так.