config.assets.precompile не добавляет активы продавца/драгоценного камня

У меня возникли проблемы с компиляцией вендорных ресурсов в виде корневых файлов.

Я хочу, чтобы следующие активы были доступны отдельно (не в комплекте с другими активами_:

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   )

Но это не имело значения. Идеи?


person Peter Ehrlich    schedule 08.04.2012    source источник


Ответы (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 Организация активов

person Max    schedule 27.06.2012
comment
Это было очень полезно. Прошло так много времени, но этот ответ следует проверить как принятый imo. - person sargas; 17.02.2015