0

我们的应用程序是构成我们基础宝石的3个引擎的集合。其他插件宝石,专门为我们的基础宝石编写,可用于添加功能的基地。Rails 4.2:引擎中SCSS清单的自定义帮助程序

目前我们有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 

... 

要清楚,这个工程。 Sass缓存文件的方式存在问题,这有点太复杂,无法进入,目前也不是我的目标。

问题是我们意识到,删除自定义Sprockets指令和Sass导入程序,以支持使用Rails帮助程序,也可以解决我们的问题,因为ERB将在SCSS之前编译,所以我们能够找到所有包含的插件所需的所有路径并将其格式化为字符串并将其转储到清单中。喜欢的东西:

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

... 

这似乎是一个更简单的解决方案,因为我们所做的是找到每个路径和转换的路径字符串。

问题似乎是Rails助手完全处于Sprockets域之外。

我发现了一些资源,但他们似乎都涉及到Rails 3

我很好奇,如果任何人有这个问题和Rails 4,如果他们解决了它,怎么样。或者如果我只是想着这一切都是错误的,并且有一种更好的方法来解决这个问题,而没有像我们以前那样的过度复杂化。

TL; DR

我想用一个链轮清单文件内定期Rails的助手。 Rails版本是4.2.4。我们正在运行引擎。这可能吗?


编辑:

This comment回答我的问题。

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

回答

0

我们前段时间有类似的问题。

application.scss(内创业板)是这样的:

/* 
*= require_tree . 
*= require_self 
*/ 

@import "c3.min"; 
@import "analytics"; 

和gemspec包含线包括app文件夹的所有代码。

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

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

+0

感谢Mike,但是我发现了另一个适合我的用例的解决方案。我链接到我的原始文章。 – meowsus