0

У меня есть приложение Rails 4.1.1 и я тестирую его с драгоценными камнями Minitest и Capybara. Выполнение этих спецификаций дает мне сообщение об ошибке:Ошибка Rails в файле SASS при интеграции-тестировании

Pages integration::GET /#test_0001_sucessfully visits the home page: 
ActionView::Template::Error: Undefined variable: "$cols14". 
    (in /Users/me/websites/rails/myapp/app/assets/stylesheets/modules/layout.scss:3) 

Этих переменным является переменной SASS и нет ничего плохого с ним (он работает в макете, и нет никаких сообщений об ошибках от препроцессора SASS).

Я предполагаю, что это непростая задача с помощью Asset Pipeline для правильной сборки таблиц стилей. Вот моя структура app/assets/stylesheets каталога:

├── application.css 
├── base 
│   ├── debug.scss 
│   ├── globals.scss 
│   ├── normalize.scss 
│   └── viewports.scss 
├── inquiries.css.scss 
├── libraries 
│   └── responsive-nav.scss 
├── modules 
│   ├── layout.scss 
│   └── typography.scss 
└── screen.scss 

... и вот как я импортировать их в application.css:

* 
*= require_self 
*= require 'screen' 
*/ 

Как получить тесты для запуска без ошибок?

Спасибо!

+1

Возможный дубликат: http://stackoverflow.com/questions/17976140/false-positive-undefined-variable-error-when-compiling-scss – cimmanon

+0

Именно с помощью частичного решения проблемы. Благодарю. – abbottjam

ответ

0

Проблема заключалась в том, что SASS генерировали дополнительные файлы. Для каждого файла выше SASS создает соответствующий файл CSS. Поскольку не каждый файл SASS импортирует каждый другой файл SASS, мы получаем переменные, которые не заданы.

Правильный способ соответствует принципу «несколько файлов в разработке (SASS), один файл в производстве (сгенерированный CSS)». Таким образом, новая структура каталогов:

├── application.css 
├── base 
│   ├── _all.scss 
│   ├── _debug.scss 
│   ├── _globals.scss 
│   ├── _normalize.scss 
│   └── _viewports.scss 
├── modules 
│   ├── _all.scss 
│   ├── _layout.scss 
│   └── _typography.scss 
├── screen.scss 
└── vendor 
    ├── _all.scss 
    └── _responsive-nav.scss 

я понял это раньше, но из-за ошибки, как это не возникают сразу (благодаря тому, как трубопроводный Asset компилирует активы), я отложила дело с этим до фронта. Урок: на ранних этапах разобраться с разбитыми окнами.

Смежные вопросы