2016-11-28 2 views
0

Warum muss meine Haupt-scss-Datei 'application.scss' heißen? Warum kann es nicht "foo.scss" heißen und in application.html.erb enthalten sein?Rails 5 Asset Naming

manifest.js

// JS and CSS bundles 
// 
//= link_directory ../javascripts .js 
//= link_directory ../stylesheets .css 


// Images and fonts so that views can link to them 
// 
//= link_tree ../fonts 
//= link_tree ../images 

Css Import

<%= stylesheet_link_tag 'foo', media: 'all' %> 

Fehler, wenn ich verwende 'foo.scss'

Vermögen wurde in der Produktion nicht erklärt werden vorkompilierte. hinzufügen Rails.application.config.assets.precompile += %w(foo.css)-config/initializers/assets.rb und starten Sie Ihren Server

Wenn ich den Dateinamen ‚application.scss‘ verwenden funktioniert es ganz gut.

Antwort

2

Ruby on Rails kompiliert die Assets vor. Die Standard-Matcher für die Erstellung der Dateien enthält application.js, application.css und alle Nicht-JS/CSS-Dateien (das alle Bild-Assets automatisch enthalten wird) von app/assets Ordner einschließlich Ihrer Edelsteine:

[ Proc.new { |filename, path| path =~ /app\/assets/ && !%w(.js .css).include?(File.extname(filename)) }, /application.(css|js)$/ ] 

Wenn Sie andere manifests oder einzelne stylesheets haben und JavaScript Dateien enthalten, können Sie sie mit dem precompile Array in config/initializers/assets.rb hinzufügen:

Rails.application.config.assets.precompile += %w(foo.js foo.css) 

Also das erzählt Schienen Ihre manifest Datei im Produktionsmodus vorzukompilieren. Und das ist, was Ihr Fehler sagt, um das in assets.rb hinzuzufügen und den Server neu zu starten.