2013-09-10 4 views
1

Я пытаюсь создать Rails Engine, который обслуживает активы в своем хост-приложении. В частности, я хотел бы быть в состоянии сделать следующее:Использование Rails Engine для совместного использования SASS Mixins по проектам

# Host App's Gemfile 
gem 'my-rockin-engine' 

И ...

# Host App's application.css 
/* 
*= require styles 
*/ 

@import 'my-rockin-engine/mixins' 

И ...

# Host App's style.sass 
.host-app-defined-class-name 
    +my-rockin-engines-mixin 

Где Mixin «my- rockin-engines-mixin "определяется где-то в активах MyRockinEngine.

Проблема

У меня есть цепь @imports от хозяина приложения, через двигатель. (Я использую @imports по причинам described here.) Любые определения стиля, которые я создаю в активах Engine, доступны для хост-приложения. Тем не менее, ни один из создаваемых мной мишеней SASS не доступен нигде, кроме одного файла, в котором указан mixin.

По существу, мне интересно, не работает ли моя реализация, потому что либо (1) я использую Двигается в замешательстве; (2) Невозможно обменяться миксинами между Rails Engines и их хост-приложением; (3) Есть некоторые аспекты директив sprockets/rails/compass/sass (@ import/require), которые я недопонимаю.

Любая помощь была бы принята с благодарностью! И я всегда могу предложить дальнейшие подробности, если они им понадобятся.

ответ

2

Для потомства, кажется, проблема, с которой я столкнулась, была в области (3) - описана в моем вопросе.

Не пытайтесь и @import sass файлов, которые называются foobar.css.sass. Компас будет обрабатывать такие файлы как css, так как они должны быть импортированы через @import 'foobar.css'. @import foobar не будет работать, потому что .css является частью имени файла.

Итак, моя проблема решена путем обеспечения того, чтобы любые файлы I @import использовали расширение .sass и не имели .css в последней части имени файла.

+0

То же самое касается файлов scss. Как только я переименовал свой файл движка в «stylesheets/engine/engine_css_file.scss» из «stylesheets/engine/engine_css_file.css.scss», он позволил мне использовать мои миксины от движка к приложению. – ryanjones

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