2012-05-06 2 views
3

Я пытаюсь развернуть приложение Rails 3.1 Я работал на локальном компьютере. Но однажды, развернувшись в Heroku (стек Cedar), я столкнулся с проблемой, с которой у меня не было локального доступа, и я не могу найти для этого никакого решения.Импорт файлов SCSS из родительского каталога на керосине Heroku

На самом деле, в некоторых моих файлах SCSS я импортирую другие файлы SCSS, расположенные в родительском каталоге. Среди нескольких синтаксисов я попробовал:

@import "file.css.scss"; 
@import "file"; 
@import "/file.css.scss"; 
@import "/file"; 
@import "../file.css.scss"; 
@import "../file"; 

Большинство из них работают на местном уровне, но ни одна работа на мое приложение Heroku кедра. Я также попытался переименовать импортированный файл в файл _file.css.scss с подчеркиванием, так как это стандартный формат для файлов SCSS, которые необходимо импортировать. Но ничего не изменил.

ошибка журналы Heroku дают мне это: ActionView::Template::Error (File to import not found or unreadable: /mixins.css.scss.

Я получаю из идей прямо сейчас, так что был бы благодарен, если у вас какие-либо улики, чтобы решить это.

Большое спасибо, Приветствия!

ответ

-1

Лучше всего использовать встроенный Rails Asset Pipeline для обработки, включая ваши файлы стилей.

В папке app/assets/stylesheets у вас должен быть файл с именем application.css. Этот файл использует Sprockets, чтобы автоматически включать все ваши файлы css, расположенные внутри папки app/assets/stylesheets.

В верхней части файла вы увидите это:

/* 
* This is a manifest file that'll automatically include all the stylesheets available in this directory 
* and any sub-directories. You're free to add application-wide styles to this file and they'll appear at 
* the top of the compiled file, but it's generally better to create a new file per style scope. 
*= require_self 
*= require_tree . 
*/ 

*= require_self часть включает в себя любой стиль CSS, написанный на этом фактический application.css файл, в то время как *= require_tree . часть включает в себя активы, найденные в app/assets/stylesheets.

Если вы хотите изменить порядок включения или указать конкретную таблицу стилей, например, файл с именем mixins.css.scss, расположенный в app/assets/stylesheets, вот как вы бы это сделать:

/* 
* This is a manifest file that'll automatically include all the stylesheets available in this directory 
* and any sub-directories. You're free to add application-wide styles to this file and they'll appear at 
* the top of the compiled file, but it's generally better to create a new file per style scope. 
*= require_self 
*= require_tree . 
*= require_mixins 
*/ 

а также волшебство звездочек будет содержать ваш файл для вас.

+0

Спасибо за ваш ответ, я даже не подумал об этом. Но на самом деле, похоже, использование require и конвейер активов вызовет у меня проблемы, поскольку у меня есть микшины и переменные в файлах, которые я хочу импортировать, и они не появляются во время компиляции при использовании Assets Pipeline. Поэтому я не могу использовать свои переменные и mixins в «вызывающем» файле (например, получение ошибки «undefined mixin»). Некоторые подробности здесь: http://dev.af83.com/2011/06/14/2-require-tips-for-rails-3-1-assets-bundling-with-sprockets.html –

+0

Вы пытались потребовать Миксины в верхней части каждого файла в настройке конвейера вашего ресурса? – joshferrara

+0

Да, это именно то, что я пробовал. И я получил ошибку «undefined mixin». –

0

Синтаксис должен быть

со следующей структурой папок

/app/ 
    /assets/ 
    /stylesheets/ 
     /pages/ 
     index.css.scss 
     products.css.scss 
     application.css.scss 

Если вы хотите включить файлы SCSS в/страниц/с application.css.scss вы могли бы сделать это:

@import "pages/index"; 
@import "pages/products"; 

Вы также должны сделать следующее (однако я не уверен, что это ограничено наличием Compass в проекте или нет).

@import "pages/*"; 

Способность делать импорт глобусов является удивительным. Но я думаю, что это может быть только Компас, или, по крайней мере, это было раньше.

0

Если файл ваше импортирование находится в той же папке, следующий должен работать:

@import './file.css.scss'; 

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

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