Я наконец понял это после того, как вспомнил, что пути загрузки ресурсов Rails и Sprockets - это разные системы.Вот что я сделал:
В config/initializes/assets.rb
я добавил следующие строки:
# Add additional assets to the asset load path
Rails.application.config.assets.paths += [
Rails.root.join('vendor', 'assets').to_s
]
# Precompile additional assets.
# application.js, application.css, and all non-JS/CSS in app/assets folder are already added.
Rails.application.config.assets.precompile += [
Rails.root.join('vendor/assets/javascripts/*').to_s,
Rails.root.join('vendor/assets/stylesheets/*').to_s
]
Первый блок добавляет активы вендора к пути активов Rails.Это позволяет мне использовать ресурсы поставщика в помощниках вида (например: image_tag
).Второй блок позволяет прекомпилировать JavaScript и CSS моего поставщика с остальными активами.
Затем я добавил следующую строку в app/assets/javascripts/application.js
выше //= require_tree .
:
//= require_tree ../../../vendor/assets/javascripts/.
Это автоматически добавит в мое приложение все файлы JavaScript, которые я поместил в vendor/assets/javascripts
.
Для Sass я добавил следующее к app/assets/stylesheets/application.sass
:
@import "../../../vendor/assets/stylesheets/*";
Я добавил этодо @import "*";
, поэтому предпочтение будет отдано стилям моего приложения.Это будет включать в себя все файлы Sass от поставщика с моим приложением.Затем я переименовал все файлы .css
моего поставщика, чтобы использовать расширение .scss
.
Теперь, когда разработка работает нормально, я беспокоился о предварительной компиляции.Я управлял rails assets:precompile
локально, и, конечно же, все активы моего поставщика были включены!