2008-09-17 16 views
19

Wenn Sie in Ihrer Rails-Anwendung HAML und SASS verwenden, werden alle Vorlagen, die Sie in public/stylesheet/*. Sass definieren, in * .css-Stylesheets kompiliert. In Ihrem Code verwenden Sie stylesheet_link_tag, um das Asset nach Namen einzuziehen, ohne sich um die Erweiterung kümmern zu müssen.Was ist die beste Methode zum Speichern von SASS generierten CSS in Ihrer Anwendung und Quellcodeverwaltung?

Viele Leute mögen es nicht, generierten Code oder kompilierten Code in der Versionskontrolle zu speichern, und es liegt auch nahe, dass das public/Verzeichnis keine Elemente enthält, die Sie nicht an den Browser senden.

Welches ist das beste Muster für die Erstellung von SASS-Ressourcen in Ihrem Rails-Projekt?

Antwort

11

ich immer Version alle Stylesheets in "public/stylesheets/sass/* sass." Und ein Ausschlussfilter für kompilierte diejenigen einzurichten:

/public/stylesheets/*.css 
0

Wenn ich es kann, möchte ich alle meine Stile in SASS-Vorlagen speichern, wenn ich HAML/SASS für ein Projekt auswähle, und ich werde application.css und scaffold.css entfernen. Dann werde ich SASS öffentlich machen/stylesheets/sass, und/public/stylesheets/*.css zu .gitignore hinzufügen.

Wenn ich mit einer Kombination aus SASS und CSS basierten Assets arbeiten muss, ist es ein wenig komplizierter. Der einfachste Weg, dies zu bewerkstelligen, besteht darin, im Stylesheet-Verzeichnis ein Ausgabe-Unterverzeichnis für generiertes CSS zu haben und dieses Unterverzeichnis in .gitignore auszuschließen. Dann müssen Sie in Ihren Ansichten wissen, welchen Stil Sie verwenden (SASS oder CSS), indem Sie das Stylesheet public/stylesheets/foo oder das Stylesheet public/stylesheets/sass-out/foo auswählen.

Wenn Sie die zweite Route gehen müssen, erstellen Sie einen Helfer, um das Unterverzeichnis sass-out wegzuspalten.

6

Ehrlich gesagt, ich mag meine kompilierte SASS Sheets in der Versionskontrolle mit . Sie sind klein, ändern sich jedoch nur, wenn sich Ihre .sass-Dateien ändern, und wenn sie mit dem Rest Ihrer App bereitgestellt werden, bedeutet dies, dass der SASS-Compiler in der Produktion nicht gestartet werden muss.

Der andere Vorteil (wenn auch ein kleiner) ist, dass Ihr Rails-Prozess keinen Schreibzugriff auf Ihr Verzeichnis public_html haben muss, wenn Sie kein Seiten-Caching verwenden. Es gibt also einen Weg, wie ein Exploit Ihres Servers böse sein kann.

5

Etwas verwandt, aber es ist eine gute Idee, Ihr CSS während Ihrer capistrano Bereitstellungen neu zu erstellen. Dieser Callback Haken tut genau das:

after "deploy:update_code" do 
    rails_env = fetch(:rails_env, "production") 
    run "#{release_path}/script/runner -e #{rails_env} 'Sass::Plugin.update_stylesheets'" 
end 

aktualisieren: Dies sollte nicht mehr mit modernen Versionen von Haml/Sass erforderlich sein.

13

Das compass Framework empfiehlt, Ihre CSS-Stylesheets unter App/Stylesheets und Ihr kompiliertes CSS in public/stylesheets/kompiliert zu platzieren.

Sie können diese konfigurieren, indem Sie den folgenden Code zu Ihrem environment.rb hinzu:

Sass::Plugin.options[:template_location] = { 
    "#{RAILS_ROOT}/app/stylesheets" => "#{RAILS_ROOT}/public/stylesheets/compiled" 
} 

Wenn Sie den Kompass Framework verwenden, setzt er diese Konfiguration für Sie, wenn Sie es installieren.