config.assets.precompile без добавления ресурсов vendor/gem
У меня проблемы с получением вендорных ресурсов для компиляции в виде корневых файлов.
Я хочу, чтобы следующие активы были доступны автономно (не упакованы с другими активами_:
vendor/gems/neo-viz/app/assets/stylesheets/neo-viz.css.scss
vendor/gems/neo-viz/app/assets/javascripts/neo-viz.js.coffee
vendor/gems/neo-viz/app/assets/javascripts/lib/jQuery/jquery-1.6.1.min.js
vendor/gems/neo-viz/app/assets/javascripts/lib/arbor/arbor.js
Со следующей строкой:
config.assets.precompile += %w( jquery-1.6.1.min.js arbor.js neo-viz.js neo-viz.css )
Только CSS-файл предварительно скомпилирован и доступен. Зачем?
Также, увидев этот вопрос ( включая ресурсы в подкаталогах с config.assets.precompile в Rails), я попытался:
config.assets.precompile += %w( jquery-1.6.1.min.js arbor.js neo-viz.js neo-viz.css lib/arbor/arbor.js arbor/arbor.js lib/jQuery/jquery-1.6.1.min.js jQuery/jquery-1.6.1.min.js )
Но это не имело значения. Идеи?
1 ответ
По умолчанию Rails просматривает только 3 локации: app/assets
, lib/assets
или же vendor/assets
, Sprockets ищет ресурсы JS в подкаталоге javascripts
, Например
app/assets/javascripts/arbor.js
lib/assets/javascripts/arbor.js
vendor/assets/javascripts/arbor.js
Если вы хотите увидеть, где ищет Rails, вы можете использовать это в консоли: Rails.application.config.assets.paths
Что вы можете сделать, это добавить свой собственный путь к конвейеру:
# @file: config/application.rb
config.assets.paths << Rails.root.join("vendor", "gems", "neo-viz", "app", "assets", "javascripts")
Затем создайте манифест, куда вы включаете ваши файлы JS:
# @file: /vendor/gems/neo-viz/app/assets/javascripts/neo-viz.js
//= require lib/jQuery/jquery-1.6.1.min
//= require lib/arbor/arbor
//= require neo-viz
Наконец добавьте свой манифест:
config.assets.precompile += %w( neo-viz.js )'
Если вы все еще хотите добавить их по отдельности, а я не вижу в этом смысла, почему бы не включить их в манифест, вам придется добавить все возможные префиксы пути, чтобы Rails знал, где искать:
# @file: config/application.rb
config.assets.paths << Rails.root.join("vendor", "gems", "neo-viz", "app", "assets", "stylesheets")
config.assets.paths << Rails.root.join("vendor", "gems", "neo-viz", "app", "assets", "javascripts")
config.assets.paths << Rails.root.join("vendor", "gems", "neo-viz", "app", "assets", "javascripts", "lib", "jQuery")
config.assets.paths << Rails.root.join("vendor", "gems", "neo-viz", "app", "assets", "javascripts", "lib", "arbor")
Затем вы можете добавить их следующим образом, поскольку ресурсы вне манифеста должны быть добавлены в массив прекомпиляции:
config.assets.precompile += %w( jquery-1.6.1.min.js arbor.js neo-viz.js neo-viz.css )
Источник: 2.1 Организация активов