Ответ 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 )'
Если вы все же хотите добавить их отдельно, что я не вижу смысла, почему бы не включить их в манифест, тогда вам нужно будет добавить all возможный префикс пути, чтобы 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 Организация активов