我正在尝试构建一个为其主机应用程序提供资产的 Rails 引擎。具体来说,我希望能够做到以下几点:
# 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
混合“my-rockin-engines-mixin”在 MyRockinEngine 资产中的某个位置定义。
问题
通过引擎,我有来自主机应用程序的@imports 链。(由于此处描述的原因,我正在使用@imports 。)我在引擎资产中创建的任何样式定义都可用于主机应用程序。但是,我创建的任何 SASS 混合都不能在任何地方使用,除非在定义混合的同一文件中。
本质上,我想知道我的实现是否不起作用,因为(1)我以一种混乱的方式使用引擎;(2) 不能在 Rails 引擎和它们的宿主应用程序之间共享 mixin;(3) 我误解了 sprockets/rails/compass/sass (@import/require) 指令的某些方面。
任何帮助将不胜感激!如果有人需要,我总是可以提供更多详细信息。