У меня есть несколько разных таблиц стилей, которые должны быть взаимоисключающими, давайте назовем их светлыми. css .s css и темными. css .s css. До сих пор мой конвейер активов состоял из:
Создание файлов в папке app / assets / stylesheets:
application.css
light.css.scss
dark.css.scss
Включение их в мои initializers / assets.rb:
Rails.application.config.assets.precompile += %w( light.css.scss )
Rails.application.config.assets.precompile += %w( dark.css.scss )
Удаляем их в моем приложении. css file:
/*
*= require_self
*= require_tree .
*= stub dark.css.scss
*= stub light.css.scss
*/
И затем вручную запрашиваем их при необходимости:
<% if subdomain == "light" %>
<%= stylesheet_link_tag "light" %>
<% else %>
<%= stylesheet_link_tag "dark" %>
<% end %>
Это сработало отлично, но потом Я обновил свой драгоценный камень Sprockets до 4.0, и все сломалось. Оказывается, мне нужен файл assets / config / manifest. js, но буквально единственная информация, которую я могу найти в этом файле, это this , где парень говорит, что не может найти в нем никакой информации либо что его приложение работало нормально с пустым. С пустым файлом я получаю такие ошибки:
#<ActionView::Template::Error: Asset `favicons/dark.png` was not declared to be precompiled in production.
, подразумевающий, что файл манифеста отвечает за прекомпиляцию всех ресурсов. Но когда я ввожу в него код котельной пластины:
#manifest.js
//= link_tree ../images
//= link_directory ../javascripts .js
//= link_directory ../stylesheets .css
, я получаю это:
#<ActionView::Template::Error: couldn't find file 'dark.css.scss' with type 'text/css'
И я получаю всевозможные подобные ошибки в файлах, независимо от того, что я делаю. Я не получаю ошибок при удалении файлов таблиц стилей из своего приложения. css, но тогда все стили смешиваются вместе, и это кошмар дизайна. Я понимаю, что приложение. css «скрывает» файлы и затем манифест. js сбивается с толку, когда не может их найти, но я не знаю, что с этим делать. Я попытался удалить их из приложения. css и вставить их в манифест. js, но это тоже не сработало. Что действительно странно, так это то, что я не могу найти никакой информации о том, как должен работать файл манифеста. js.
Кто-нибудь знает, как я могу сохранить свои файлы стилей в заглушке и не сломать весь конвейер?