Rails 3.1: почему rails_admin приводит к сбою `rake asset: precompile`? - PullRequest
5 голосов
/ 19 февраля 2012

EDIT

Этот вопрос должен быть: Почему rails_admin вызывает сбой rake asset:precompile?

Я обновляю Rails 3.0 до 3.1 и включаю активтрубопровод.Где-то по пути rails_admin сломал мою прекомпиляцию ресурсов:

-----> Preparing app for Rails asset pipeline
       Running: rake assets:precompile
       rake aborted!
       Undefined variable: "$red".
       (in /tmp/build_zkm1tzzdhdh6/vendor/bundle/ruby/1.9.1/bundler/gems/rails_admin-a887eee6e916/app/assets/stylesheets/rails_admin/base/theming.css.scss)

       Tasks: TOP => assets:precompile:primary
       (See full trace by running task with --trace)
       Precompiling assets failed, enabling runtime asset compilation
       Injecting rails31_enable_runtime_asset_compilation
       Please see this article for troubleshooting help:
       http://devcenter.heroku.com/articles/rails31_heroku_cedar#troubleshooting

Что здесь происходит?$red определено (в другом файле rails_admin .css).Так почему же theming.css.scss не может получить к нему доступ?Как мне избежать этого?

Ответы [ 3 ]

9 голосов
/ 19 марта 2012

Я исправил это в файле config / environment / production.rb: Я заменил строку

config.assets.precompile = ['*.js', '*.css']

другому

config.assets.precompile += %w(rails_admin/rails_admin.css rails_admin/rails_admin.js)

Это решение работает для ruby ​​1.9.3 и rails 3.1

3 голосов
/ 19 февраля 2012

Вау! Я обнаружил проблему - это известная проблема на Heroku.

Нельзя включать все файлы rails_admin .css или .js. i.e.:

  • убедитесь, что у вас нет всеохватывающего *. (Css | js) в config.assets.precompile
  • убедитесь, что у вас нет всеохватывающего require_tree . в application.(css|js)

Моя проблема в том, что я делаю первое. Это приводит к тому, что мои css-файлы загружаются изолированно, поэтому такие переменные, как $red, не распределяются между ними корректно.

2 голосов
/ 19 февраля 2012

Похоже, что жалоба отсутствует в base.css - трассировка стека говорит, что проблема была в /app/assets/stylesheets/rails_admin/base/theming.css.scss.Здесь и называется переменная $ red.

Прекомпиляция ресурсов просматривает все ваши CSS-листы индивидуально, в виде пузыря - , а затем объединяет их в один большой кусок.Вот почему это дает сбой - переменная $red не отображается на отдельном листе, даже если она будет отображаться в скомпилированной версии.

Это можно исправить одним из двух способов: заменить $red в theming.css.scss с фактическим цветовым кодом, или вы можете переместить свои переменные в файл и импортировать этот файл.Например, в моем приложении я поместил все свои переменные цвета в «color_codes.css.scss».Затем в любой таблице стилей, где мне нужно сослаться на них, я добавляю строку @import "color_codes"; в верхнюю часть таблицы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...