У меня есть несколько ресурсов в приложении Rails 3.2rc1, вот некоторые из них:
app/
assets/
stylesheets/
application.css.scss
users.css.scss
projects.css.scss
(...)
parts/
fonts.scss
(...)
application.css.scss
- это простой манифест с такими строками, как:
@import 'parts/fonts';
И views/layouts/application.html.slim
загружает предварительно скомпилированные таблицы стилей:
= stylesheet_link_tag "application", media: "all"
= stylesheet_link_tag params[:controller], media: "all"
Пока все хорошо, отлично работает для разработки. Во время развертывания в рабочей среде вызывается rake assets:precompile
, и он отлично работает для таблицы стилей приложения. Но таблицы стилей для каждого контроллера были пропущены и, следовательно, бомбы приложения.
Чтобы исправить это, я добавил это к config/environments/production.yml
:
config.assets.precompile += %w(*.css *.js)
Таблицы стилей для каждого контроллера теперь скомпилированы, но приложение все еще содержит:
ActionView::Template::Error (application.css isn't precompiled):
5: = stylesheet_link_tag "application", media: "all"
app/views/layouts/application.html.slim:5:in `_app_views_layouts_application_html_slim__4032169744877009540_23192340'
Но когда я смотрю в public/assets/
, прекомпилированный application-3218a93530ecb65582d5b345133dab49.css
и его сжатый близнец есть.
И если я заменю подстановочные знаки в config/environments/production.yml
списком всех таблиц стилей для каждого контроллера (другими словами: все, кроме application.css
), все будет работать как шарм:
config.assets.precompile += %w(users.css projects.css)
Является ли таблица стилей приложения несколько обработанной дважды, и поэтому прекомпиляция не работает так, как объявлено?