ruby on rails 3.1 - sassc - SASS, Rails 3.1: Carga de hojas de estilo en proveedores/activos
sassc-rails (6)
Estoy usando SASS para cargar hojas de estilo en una aplicación Rails 3.1 (sass-rails 3.1). Por ejemplo, los parciales de Sass en app/assets/stylesheets
se cargan utilizando @import
en application.sass
-
@import "pages/common"
@import "pages/**/*"
@import "jquery-ui.css"
Ahora, también quiero cargar el vendor/assets/stylesheets
. Tenga en cuenta que no estoy utilizando el require vendor
, ya que @import pages/*
parece ser la manera más descarada de hacerlo. Los archivos aquí serán css
, y no sass
o scss
. No puedo usar @import ../../../vendor/assets/stylesheets/*
ya que solo funciona para archivos sass
y scss
.
¿Hay alguna manera de hacer esto?
Actualizar
Lo que tengo ahora es esto.
application.css.scss
//= require_tree .
//= require vendor
//= require_self
Esto incluye todos los parciales de sass mencionados anteriormente. El require vendor
en
vendor/assets/stylesheets/vendor.css
parece a
//= require_tree .
Una advertencia de este enfoque es que los mixins de sass (definidos por el usuario y complementos) y las variables comunes no están disponibles en todos los parciales. Lo que tengo ahora es un _common_imports.sass
que yo @import
primero en todos los parciales.
common_imports.sass
@import "colors"
@import "compass/css3/gradient"
@import "compass/css3/border-radius"
@import "compass/css3/box-shadow"
Importar common_imports
en todos los parciales es muy repetitivo.
Intente cambiar la extensión a
.scss
para la hoja de estilo de su proveedor.
Una vez que hice esto, SASS pudo encontrar la importación requerida.
Cuando estás usando motores, esto se vuelve más complicado. Una ruta rápida de mono es incluir la ruta del proveedor de motores en la SASS_PATH
entorno SASS_PATH
. Esto es lo que funcionó para mí en el engine.rb
:
ENV[''SASS_PATH''] = "#{ENV[''SASS_PATH'']}:#{File.expand_path(''../../vendor/assets/stylesheets/'')}"
A partir de ese momento, siempre puede poner esto en un método para SECAR cuando está incluyendo varios motores en su proyecto.
Hum, yo diría que estás usando el administrador de activos de una manera extraña.
Todo en app / asset / , lib / asset / y vendor / asset / * se asignan en el mismo lugar en / asset /, en el lado web, parece que están todos en la misma carpeta.
Lo que debe hacer, ya que está en los rieles 3.1, no es utilizar css / sass @import
pero las ruedas dentadas lo require
.
Deberías tener en la parte superior de tu application.sass:
// require pages/common
// require_tree ./pages
// require jquery-ui
// require_self
para que los piñones pongan todo en el mismo archivo en producción y no tenga que cargar un montón de archivos.
Puede usar la ruta de abajo para cargar archivos de activos del proveedor / activos.
Ponga la línea debajo de su archivo application.css, que funcionará muy bien.
*= require_tree ../../../vendor/assets/stylesheets/.
Lo mismo se puede hacer para los activos de Javascript.
Si te estoy entendiendo correctamente, creo que esto podría ayudar.
Agregue lo siguiente a config/application.rb
, dentro de la class Application < Rails::Application
block:
config.sass.load_paths << File.expand_path(''../../lib/assets/stylesheets/'')
config.sass.load_paths << File.expand_path(''../../vendor/assets/stylesheets/'')
Acabo de agregar lo anterior a una aplicación, y las siguientes directivas ahora funcionan:
- Importar Sass:
@import ''grid''
enapp/assets/stylesheets/application.css.scss
encuentra elvendor/assets/stylesheets/_grid.scss
archivovendor/assets/stylesheets/_grid.scss
; - Importar CSS regular:
@import ''background''
, nuevamente enapplication.css.scss
, encuentravendor/assets/stylesheets/background.css
.
¿Eso ayuda? Lo siento si he entendido mal el problema!
Tenga en cuenta que deberá reiniciar los rieles si creó un nuevo directorio de proveedor / * (por ejemplo, proveedor / hojas de estilo). Si está viendo esto en Rails 3.2 o posterior, este es probablemente el culpable más probable.