Ruby on rails Rails 4.2:引擎中SCSS清单的自定义帮助程序

Ruby on rails Rails 4.2:引擎中SCSS清单的自定义帮助程序,ruby-on-rails,ruby,ruby-on-rails-4,sprockets,ruby-on-rails-4.2,Ruby On Rails,Ruby,Ruby On Rails 4,Sprockets,Ruby On Rails 4.2,我们的应用程序是由3个引擎组成的集合,它们构成了我们的基础gem。其他插件gem,专门为我们的基础gem编写,可以用于向基础gem添加功能 目前,我们有2个自定义链轮指令和1个自定义Sass导入器,它们试图将这些插件中的SCSS文件动态拉入基本清单。一个人为的示例如下所示: //= depend_on_gemfile # mimics default "depend_on" functionality //= depend_on_stylesheets # mimics default

我们的应用程序是由3个引擎组成的集合,它们构成了我们的基础gem。其他插件gem,专门为我们的基础gem编写,可以用于向基础gem添加功能

目前,我们有2个自定义链轮指令和1个自定义Sass导入器,它们试图将这些插件中的SCSS文件动态拉入基本清单。一个人为的示例如下所示:

//= depend_on_gemfile     # mimics default "depend_on" functionality
//= depend_on_stylesheets # mimics default "depend_on" functionality

...

@import 'engine/namespace/settings/global';
@import 'engine/namespace/settings/colors';
@import 'engine/namespace/settings/fonts';
@import '[engine-plugins]/namespace/settings'; # mimics Sass Filesystem importer

...
@import 'engine/namespace/settings/global';
@import 'engine/namespace/settings/colors';
@import 'engine/namespace/settings/fonts';
<%= load_plugin_stylesheets_for('settings'); %>

...
明确地说,这是可行的。我们在Sass缓存文件的方式上遇到了问题,这有点太复杂了,我现在的目标不是这样

关键是,我们意识到,为了使用Rails助手,删除自定义链轮指令和Sass导入器也可以解决我们的问题,因为ERB将在SCS之前编译,所以我们能够找到所有包含的插件中所需的所有路径并将其格式化为字符串,然后将其转储到清单中。比如:

//= depend_on_gemfile     # mimics default "depend_on" functionality
//= depend_on_stylesheets # mimics default "depend_on" functionality

...

@import 'engine/namespace/settings/global';
@import 'engine/namespace/settings/colors';
@import 'engine/namespace/settings/fonts';
@import '[engine-plugins]/namespace/settings'; # mimics Sass Filesystem importer

...
@import 'engine/namespace/settings/global';
@import 'engine/namespace/settings/colors';
@import 'engine/namespace/settings/fonts';
<%= load_plugin_stylesheets_for('settings'); %>

...
@import'engine/namespace/settings/global';
@导入“引擎/名称空间/设置/颜色”;
@导入“引擎/名称空间/设置/字体”;
...
这似乎是一个更简单的解决方案,因为我们所做的就是找到每个路径并将这些路径转换为字符串

问题似乎是Rails助手完全不属于链轮的范围

我找到了一些资源,但它们似乎都与Rails3有关

我很好奇是否有人在Rails4上遇到过这个问题,他们是否解决了这个问题,以及如何解决。或者,如果我只是想这一切都是错误的,有一个更好的方法来解决这个问题,而不会像我们以前那样过于复杂

TL;DR

我想在链轮清单文件中使用常规Rails助手。Rails版本是4.2.4。我们在运转引擎。这可能吗


编辑:

回答了我的问题


engine.rb
文件中的初始值设定项中实现此解决方案后,所有Rails ActionView帮助程序都可用,包括我的自定义编写的帮助程序。

不久前我们遇到了类似的问题

application.scss(在gem中)如下所示:

 /*
 *= require_tree .
 *= require_self
 */

@import "c3.min";
@import "analytics";
gemspec包含一行代码,用于包含应用程序文件夹中的所有代码

Gem::Specification.new do |s|    
   s.files = Dir['{app,config,db,lib}/**/*', 'MIT-LICENSE', 'Rakefile',   'README.rdoc']
end

一定要检查环境文件中是否也没有启用任何缓存。

谢谢Mike,但我找到了另一个更适合我的用例的解决方案。我在我原来的帖子中链接到了。