2012-03-28 15 views
17

Ich habe bootstrap in meine App integriert, indem ich bootstrap-sass benutzt habe. Die App funktioniert auf meinem lokalen Rechner in Ordnung, aber wenn ich über Capistrano zu implementieren gehen, bekomme ich diesen Fehler:

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) 

Wenn die Capistrano versucht assets:precompile

Ich denke, diese Variable den Fehler wirft zu laufen, weil Es ist die erste Variable in der ersten scss-Datei, die vorkompiliert werden soll.

Etwas lädt nicht richtig. Irgendwelche Ideen was es sein könnte?

bearbeiten

Voll Spur hier https://gist.github.com/2233071

Edit 2

Added application.rb und production.rb GIST

+0

Können Sie 'rake assets: precompile' auf Ihrer lokalen Maschine ausführen? – stephenmurdoch

+0

Ja, aber ich muss es ausführen und angeben, dass ich in der Entwicklungsumgebung bin, wenn das wichtig ist: 'RAILS_ENV = Entwicklungsbündel exec rake assets: precompile' –

+0

Haben Sie' config.assets.precompile' überhaupt geändert? – nobody

Antwort

55

Sie haben bearbeitet Ihre production.rb Datei helfen, so dass Rails versuchen, alle CSS/JS-Dateien (Zeile 48) vorzukompilieren.

Standardmäßig wird Rails nur application.css(.scss) vorkompilieren. Wenn Sie den Platzhalterselektor zu config.assets.precompile hinzufügen, werden Sie von Rails aufgefordert, alle CSS-Assets in Ihrer Anwendung vorzuspannen, einschließlich Sass-Teiltabellen. Natürlich ist dies wahrscheinlich nicht das gewünschte Verhalten.

Rails werden daher über jedes css-Asset iterieren und diese kompilieren. Es kommt vor, dass _accordion.css.scss das erste Bootstrap-Asset ist, auf das es stößt, und Rails wird versuchen, das zuerst zu kompilieren. _accordion ist nicht unabhängig und erfordert, dass einige Dateien davor geladen werden, daher der Fehler. Es sollte sowieso niemals als separate Datei kompiliert werden.

Sie müssen Ihre config.assets.precompile ändern, um nur die zusätzlichen Dateien hinzuzufügen, die Sie neben application.css/application.js benötigen.

+0

Das war genau mein Problem auch und Ihre Lösung löste es und gab mir eine klare Antwort, wo ich vermasselt habe. – cfeduke

+1

Ich habe 'config.assets.precompile + =% w (* .css * .js)' nirgendwo und bekomme genau den gleichen Fehler. Jede Hilfe wäre willkommen. – kakubei

+1

Danke. Hier gilt das gleiche. In Rails 4.2.1 befindet sich die zu ändernde Datei jetzt in /config/initializers/assets.rb –

1

Sie müssen sicherstellen, die Einfuhr von allen machen Dein CSS ist in der richtigen Reihenfolge gemacht. Damit Variablen funktionieren, muss es eine der ersten paar CSS-Dateien sein, die geladen werden.

Dieser Beitrag/Antwort sollte Proper SCSS Asset Structure in Rails

1

Anfangs hatte ich das ähnliche Problem Sass :: SyntaxError: Undefinierte Variable: "$ alert-padding". Problem mit dieser Linie in der assets.rb Datei:

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

Sie wissen nicht, warum, aber für mich es zu dieser Linie

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

Nachdem das Problem gelöst wurde zu ändern geholfen und alles funktionierte in Produktion.

Verwandte Themen