2011-08-15 22 views
26

Quiero excluir un archivo javascript (modernizr) particular de la canalización porque quiero que se cargue por separado.Rails 3.1 Pipeline - Exclude Javascript File

Quiero cargar Modernizr al principio y el resto de mi javascript concatenado al final.

¿Hay alguna manera de hacer lo contrario a un requerimiento en la canalización de activos en 3.1? es decir. una exclusión?

Gracias de antemano.

Adam.

Respuesta

55

me eligieron para mantener la funcionalidad piñones cambiando

//= require_tree 

a

//= require_directory . 

Esto evita que las ruedas dentadas de auto-carga de los archivos en el mismo directorio, pero no en todas las carpetas adicionales.

Esto permitió que me mueva a la Modernizr.js/javascript carpeta de activos/superior y la carga manualmente en la parte superior con:

<%= javascript_include_tag "top/modernizr" %> 

y muevo

<%= javascript_include_tag "application" %> 

Para el fondo de mi archivo application.html.erb (arriba de la etiqueta de cuerpo de cierre)

+0

debe ser ' top/modernizr 'para que encuentre su archivo;) – Jay

+0

Good catch Jay. Lo edité para corregirlo en caso de que alguien lo use como referencia ... – Adam

+2

Gracias Adam. Además, cuando implemente en producción, necesito agregar este código 'config.assets.precompile + = ['top/*. Js', 'top/*. Css']' en production.rb, de lo contrario, fallará en mi servidor. – Frankel

14

Esto es mucho más fácil logra yendo a su archivo de entornos production.rb config// y añadiendo la siguiente línea

config.assets.precompile += %w(modernizr.js) 

Luego, cuando precompila sus activos modernizador tendrá su propio archivo independiente que se puede utilizar en tu cabeza.

+0

Gracias. Esto funciona.Lo que elegí hacer fue mantener mi raíz cargada automáticamente, y tener carpetas separadas que contengan archivos cargados manualmente. entonces en los vendedores> assets> javascripts> top Puse modernizr.js. Si bien todo en assets> javascripts todavía se carga con piñones. usando: // = require_directory. en mi application.js – Adam

+0

En rails 4, esto se puede agregar en el archivo config/initializers/assets.rb como sigue: Rails.application.config.assets.precompile + =% w (modernizr.js) – maniempire

3

Estas respuestas no están actualizadas. Simplemente mueva active_admin.css.scss de app/assets/stylesheets a vendor/assets/stylesheets.

Haga lo mismo con active_admin.js.coffee (pase de app/assets/javascripts a vendor/assets/javascripts).

Sus activos se cargarán cuando sea necesario, y no tendrá que hacer modificaciones en applications.js para acomodar active_admin.

Esta solución se describe en this issue. Espero que esto ayude.

18

Me doy cuenta de que esta es una vieja pregunta, pero Google me envió aquí la semana pasada, por lo que no es una pregunta obsoleta. La respuesta que encontré en otro lugar fue the "stub" directive for sprockets. Algo así como

//= require-tree . 
//= stub Modernizr 

Esto mantiene a Modernizr.js fuera de los activos incluidos. Se puede incluir con su propia etiqueta, al estilo de la respuesta original.

El registro de cambios de Sprockets dice "stub" se agregó en enero de 2012, por lo que no estaría disponible en el momento en que se respondió por primera vez, pero creo que es una buena respuesta ahora.

+0

No funciona ... – Alfie

+0

@Alfie funciona para 'piñones 3.3.2' aquí –

+0

@mcdave Sí, es realmente útil. – Abhinay

Cuestiones relacionadas