2012-04-08 12 views
12

Tengo problemas para compilar los activos vendorizados como archivos raíz.config.assets.precompile no agregando activos de proveedor/gema

Quiero tener los siguientes activos independientes disponibles (no se incluye con otra assets_:

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 

con la siguiente línea:.

config.assets.precompile += %w(jquery-1.6.1.min.js arbor.js neo-viz.js neo-viz.css) 

Sólo el archivo CSS es precompilado y puesto a disposición por qué ?

También, después de ver esta pregunta (Including assets in subdirectories with config.assets.precompile in Rails), probé:

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 ) 

Pero no hizo la diferencia. Ideas?

Respuesta

18

Por defecto Rails solo mira en 3 ubicaciones: app/assets, lib/assets o vendor/assets. Piñones busca activos JS en el subdirectorio javascripts. P.ej.

app/assets/javascripts/arbor.js 
lib/assets/javascripts/arbor.js 
vendor/assets/javascripts/arbor.js 

Si desea ver dónde Carriles está buscando puede utilizar esto en la consola: Rails.application.config.assets.paths

Lo que puede hacer es añadir su ruta personalizada a la tubería:

# @file: config/application.rb 
config.assets.paths << Rails.root.join("vendor", "gems", "neo-viz", "app", "assets", "javascripts") 

A continuación, cree un manifiesto, donde incluya sus archivos 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 

Finalmente agregue el manifiesto:

config.assets.precompile += %w(neo-viz.js)' 

Si aún desea agregarlos separadamente, lo que no veo el punto, ¿por qué no los incluye en un manifiesto, entonces usted tendrá que añadir todo la posible prefijo de ruta por lo raíles sabe dónde buscar:

# @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") 

a continuación, puede añadirlos como este, ya que los activos fuera de un manifiesto debe añadirse a la matriz de precompilación:

config.assets.precompile += %w(jquery-1.6.1.min.js arbor.js neo-viz.js neo-viz.css) 

Fuente: 2.1 Asset Organization

+1

Esto fue muy útil. Ha pasado tanto tiempo, pero esta respuesta debe verificarse como _accepted_ imo. – sargas

Cuestiones relacionadas