2012-03-28 10 views
17

He integrado bootstrap en mi aplicación usando bootstrap-sass. La aplicación funciona bien en mi máquina local, pero cuando voy a desplegar a través de Capistrano, me sale este error:

Undefined variable: "$baseLineHeight". 
(in /var/www/CollegeSportsBlueBook/shared/bundle/ruby/1.9.1/gems/bootstrap-sass-2.0.1/vendor/assets/stylesheets/bootstrap/_accordion.scss) 

Cuando el Capistrano intenta ejecutar assets:precompile

creo que esta variable está lanzando el error porque es la primera variable en el primer archivo scss que se intenta precompilar.

Algo no se está cargando bien. ¿Alguna idea de lo que podría ser?

Editar

traza completa aquí https://gist.github.com/2233071

Editar 2

Agregado application.rb y production.rb a Gist

+0

¿Se puede ejecutar 'rake assets: precompile' en su máquina local? – stephenmurdoch

+0

Sí, pero tengo que ejecutarlo y especificar que estoy en el entorno de desarrollo, si eso importa: 'RAILS_ENV = paquete de desarrollo administrador de activos: precompilar' –

+0

¿Ha cambiado' config.assets.precompile' en absoluto? – nobody

Respuesta

55

ha editado su archivo production.rb de manera que los carriles intentará precompilar todos los archivos CSS/JS (línea 48).

De forma predeterminada, Rails solo precompilará application.css(.scss). Al agregar el selector de comodines a config.assets.precompile le está pidiendo a Rails que precompile cada activo css en su aplicación, incluidos los parciales Sass. Naturalmente, probablemente este no sea el comportamiento que deseas.

# Precompile additional assets (application.js, application.css, and all non-JS/CSS are already added) 
config.assets.precompile += %w(*.css *.js) 

Por lo tanto, los raíles iterarán sobre cada activo css, compilándolos. Ocurre que _accordion.css.scss es el primer activo de Bootstrap que se encuentra, y Rails intentará compilarlo primero. _accordion no es independiente, y requiere que se carguen algunos archivos antes de él, de ahí el error. Nunca se debe compilar como un archivo separado de todos modos.

Debe cambiar su config.assets.precompile para agregar solo los archivos adicionales que necesita aparte de application.css/application.js.

+0

Esto fue exactamente mi problema también y su solución lo resolvió y me dio una respuesta clara en cuanto a dónde metí la pata. – cfeduke

+1

No tengo 'config.assets.precompile + =% w (* .css * .js)' en ninguna parte y obtengo exactamente el mismo error. Cualquier ayuda sería apreciada. – kakubei

+1

Gracias. Igual que aquí. En Rails 4.2.1, el archivo para modificar está ahora en /config/initializers/assets.rb –

1

Es necesario asegurarse de que la importación de todo tu CSS se hace en el orden correcto. Para que funcionen las variables, debe ser uno de los primeros pocos archivos CSS que se carguen.

Este post/respuesta debería ayudar a Proper SCSS Asset Structure in Rails

1

Inicialmente tuve el problema similar Sass :: SyntaxError: Variable indefinida: "$ alert-padding". problema con esta línea en el archivo assets.rb:

Rails.application.config.assets.precompile += [/.*\.css/] 

No sé por qué, pero me ayudó a cambiar a esta línea

Rails.application.config.assets.precompile += [/^[-_a-zA-Z0-9]*\..*/] 

Después de que se resolvió el problema y todo funcionaba en producción.