У меня такое подлое чувство, что я упускаю что-то очевидное:
Я запустил
RAILS_ENV=production bundle exec rake assets:precompile
, чтобы предварительно скомпилировать свои активы перед тем, как отправлять их в Heroku.Просмотр /public/assets
показывает, что application.js
и application.css
манифесты успешно скомпилированы, но ни один из моих автономных файлов не скомпилирован предварительно :
admin.js.coffee
blog.js.coffee.erb
[ ... several more similarly named ... ]
twitter.js.coffee.erb
и
admin.css.less
home.css.less
public.css.less
все отсутствуют в /public/assets
.
Я думал, что Rails прекомпилирует файлы application.js / .css, плюс все, что не заканчивается на js / css:
Сопоставление по умолчанию для компиляции файлов включает application.js, application.css и все файлы, которые не заканчиваются на js или css:
[ /\w+\.(?!js|css).+/, /application.(css|js)$/ ]
from: http://guides.rubyonrails.org/asset_pipeline.html#precompiling-assets
Я не хочу обновлять config.assets.precompile
вручную каждый раз, когда меняется имя файла ресурса.Мне не хватает чего-то, что заставит Rails прекомпилировать эти ресурсы?
Обновление
Основываясь на ответе @Richard Hulse ниже, я проверил это, создав отдельный файл манифеста для отдельного актива (т.е. япереименовано twitter.js.coffee.erb
в twitter-include.js.coffee.erb
и добавлено twitter.js
с одним //= require
извлечением переименованного оригинала). Кажется, это работает.
Должен быть более чистый способ, чем этот , и кажется, что противоречит руководству Rails , указанному выше.В руководстве говорится, что единственными файлами, которые не будут скомпилированы, являются файлы .js или .css , а не с именем application
.Я вижу только то, что only .js или .css компилируется напрямую (т.е. не через манифест) - ничего больше.