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