У меня непонятное ощущение, что я упускаю что-то очевидное:
Я запустил
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)$/]
от: 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
. Я вижу, что только .js или .css компилируются напрямую (т.е. не через манифест) - ничего больше.