2011-11-07 14 views
6

Tengo un montón de archivos 'bootstrap' sass que me gustaría guardar en mi directorio de aplicaciones /lib, siguiendo las nuevas convenciones de la cartera de activos.Rails 3.1: importación Sass de Lib

Sin embargo, necesito importarlos en mi application.css.scss en lugar de requerirlos, ya que me gustaría compartir algunas variables de color, etc. en toda la aplicación. No he podido encontrar la manera de obtener @import para obtener un archivo .scss del /lib/assets/stylesheets.

¿Alguna sugerencia?

Respuesta

10

@importdebe mirada para cualquier .css.scss archivos que se encuentran en su camino de carga activos, ya sea en app/assets/stylesheets, lib/assets/stylesheets, vendor/assets/stylesheets, o cualquier rutas adicionales añadidos por gemas, por lo que es extraño que usted está recibiendo un error.

Nota que no es necesario pasar un nombre de carpeta cuando se utiliza @import a menos que el archivo está en un subdirectorio de assets/stylesheets - sass-rails se verá a través de cada carpeta en su trayectoria de carga y ver si el recurso existe en relación con dichas carpetas.

Para asegurarse de que lib/assets/stylesheets se encuentre en la ruta de carga de sus activos (que debería ser, ya que es una opción predeterminada), abra un aviso de Rails y escriba Rails.application.config.assets.paths. A modo de ejemplo, aquí está el resultado de una de mis aplicaciones:

ruby-1.9.3-p0 :012 > Rails.application.config.assets.paths 
=> ["/Users/tom/ruby/qa/app/assets/images", 
"/Users/tom/ruby/qa/app/assets/javascripts", 
"/Users/tom/ruby/qa/app/assets/stylesheets", 
"/Users/tom/ruby/qa/lib/assets/stylesheets", 
"/Users/tom/ruby/qa/vendor/assets/javascripts", 
"/Users/tom/ruby/qa/vendor/assets/stylesheets", 
"/Users/tom/.rvm/gems/ruby-1.9.3-p0/gems/jquery-rails-1.0.14/vendor/assets/javascripts", 
"/Users/tom/.rvm/gems/ruby-1.9.3-p0/gems/bootstrap-sass-1.4.0/vendor/assets/javascripts", 
"/Users/tom/.rvm/gems/ruby-1.9.3-p0/gems/bootstrap-sass-1.4.0/vendor/assets/stylesheets"] 

También vale la pena asegurando que sass-rails es hasta la fecha y ejecutando la última versión, ya que creo que las primeras versiones tenían el apoyo límite en términos de cruz-carpeta @import.

NB: también creo que la convención sugiere archivos como Bootstrap o jQuery debe ir en la carpeta de vendor/assets en lugar de lib/assets

+0

Gracias por la ayuda, lo tengo trabajando. Debo haber tenido un error tipográfico en alguna parte. FWIW el archivo bootstrap en cuestión es mi propia creación personalizada que utilizo para iniciar cualquier aplicación nueva, por lo que a mí me parece que es "lib" (compartido entre mis propias aplicaciones) en lugar de "proveedor" (distribuciones públicas). – Andrew

+0

Sí, eso tendría sentido, me uní a los puntos entre su comentario sobre mi respuesta ayer y su pregunta ahora y pensé que estaba usando alguna versión de Bootstrap de Twitter, en ese caso, sin tener en cuenta mi nota al pie, 'lib' es definitivamente el correcto lugar – nobody

+0

Oh ... :) En realidad, la razón principal de mi comentario sobre su respuesta fue que estaba muy contento de encontrar un ejemplo de un arranque en una gema que utiliza la tubería de activos. Me gustaría extraer mi bootstrap personalizado en una joya algún día y la tuya es una gran referencia sobre cómo hacerlo. Por ahora solo moverlo a lib es una buena limpieza. ¡Gracias de nuevo! – Andrew

8

que tenía el mismo problema, y ​​era porque se me olvidó servidor de reinicio después de agregar archivos al directorio lib.

+1

Doh. Cuántas veces olvidaré todo esto. (demasiados) –

+1

Sí, eso lo hizo – Yarin