2012-03-28 17 views
17

Ho integrato il bootstrap nella mia app usando bootstrap-sass. L'applicazione funziona bene sulla mia macchina locale, ma quando vado a distribuire via Capistrano, ottengo questo errore:

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) 

Quando il Capistrano tenta di eseguire assets:precompile

penso che questa variabile sta gettando l'errore perché è la prima variabile del primo file scss che si tenta di precompilare.

Qualcosa non si carica correttamente. Qualche idea su cosa potrebbe essere?

Modifica

completa traccia qui https://gist.github.com/2233071

Edit 2

Aggiunto application.rb e production.rb a Gist

+0

È possibile eseguire "rake asset: precompilare" sulla macchina locale? – stephenmurdoch

+0

Sì, ma devo eseguirlo e specificare che sono nell'ambiente di sviluppo, se questo è importante: 'RAILS_ENV = pacchetto di sviluppo exec rake assets: precompile' –

+0

Hai cambiato' config.assets.precompile'? – nobody

risposta

55

aver modificato il file production.rb modo che Rails tenterà di precompilare tutti i file CSS/JS (linea 48).

Per impostazione predefinita, Rails precompilerà solo application.css(.scss). Aggiungendo il selettore di caratteri jolly a config.assets.precompile, stai chiedendo a Rails di precompilare l'asset ogni nella tua applicazione, inclusi i parziali di Sass. Naturalmente, questo probabilmente non è il comportamento che desideri.

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

Rails quindi eseguirà l'iterazione su ciascun asset css, compilandolo. Succede che lo _accordion.css.scss sia il primo asset Bootstrap che incontra, e Rails proverà a compilarlo per primo. _accordion non è indipendente e richiede alcuni file per essere caricato prima di esso, quindi l'errore. Non dovrebbe mai essere compilato come un file separato comunque.

È necessario modificare il numero config.assets.precompile per aggiungere solo i file aggiuntivi necessari a prescindere da application.css/application.js.

+0

Questo era esattamente il mio problema pure e la tua soluzione l'ha risolto e mi ha dato una risposta chiara su dove ho incasinato. – cfeduke

+1

Non ho 'config.assets.precompile + =% w (* .css * .js)' ovunque e sto ottenendo esattamente lo stesso errore. Qualsiasi aiuto sarebbe apprezzato. – kakubei

+1

Grazie. Anch'io. In Rails 4.2.1, il file da modificare è ora in /config/initializers/assets.rb –

1

È necessario assicurarsi che l'importazione di tutti il tuo css è fatto nell'ordine corretto. Perché le variabili funzionino, deve essere uno dei primi file css da caricare.

Questo post/risposta dovrebbe aiutare Proper SCSS Asset Structure in Rails

1

Inizialmente avevo il problema simile Sass :: SyntaxError: Variabile non definita: "$ alert-padding". problema con questa linea nel file assets.rb:

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

Non so perché ma per me ha aiutato a cambiare a questa linea

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

Dopo che il problema è stato risolto e tutto ha funzionato in produzione.

Problemi correlati