2011-12-21 145 views
2

ActiveAdmin是給我一個ActiveAdmin資產預編譯錯誤

Undefined mixin 'global-reset'. 

錯誤,當它試圖運行

rake assets:precompile 

ActiveAdmin是0.3.4。 我有ActiveAdmin和資產組在我的Gemfile與sass,咖啡欄和uglifier。

回答

11

問題的確如@dimitar指出的那樣,因爲資產管道正試圖編譯partials,並且因爲它們沒有編寫成獨立編譯,所以出現了依賴關係問題。

根據您的應用程序,您可能需要全部捕獲,特別是如果您在多個子文件夾中有多個JS,CoffeScript和SCSS/SASS文件。在這種情況下,您可能會遇到rails抱怨,因爲當catch全部被移除時,某些東西沒有編譯生產。

解決方案是捕獲所有不包含SASS偏好的文件_filename.css。[scss | sass]並解決它(爲我工作!)。我還包含了其他activeadmin建議的其他一些技巧,包括準確編譯的一些ActiveAdmin依賴關係。這是我的代碼:

# Include all JS files, also those in subdolfer or javascripts assets folder 
# includes for exmaple applicant.js. JS isn't the problem so the catch all works. 
config.assets.precompile += %w(*.js) 
# Replace %w(*.css *.js *.css.scss) with complex regexp avoiding SCSS partials compilation 
config.assets.precompile += [/^[^_]\w+\.(css|css.scss)$/] 
#Adding active_admin JS and CSS to the precompilation list 
config.assets.precompile += %w(active_admin.css active_admin.js active_admin/print.css) 
+0

奇怪,這似乎是編譯js就好了,並忽略了css偏好罰款,但也似乎忽略非部分css – 2015-07-30 22:44:56

0

在你的CSS文件中,你最有可能:

@include 'global-reset'; 

但是,你要導入您的全局復位,所以你應該改變,要:

@import 'global-reset'; 

希望這有助於!

+0

這已經改變了。 – nvano 2011-12-22 18:06:18

14

我只是偶然發現了這一點。我遇到的問題是我的production.rb文件中的config.assets.precompile指令。我在那裏有一個正則表達式,它匹配activeadmin寶石中的一些資源,這不應該與預編譯相匹配。更改選項以下爲我工作:

# Needed for the ActiveAdmin's manifest assets. 
config.assets.precompile += ['active_admin.css', 'active_admin.js'] 

有問題的代碼塊我是這樣的:

# This one effectively turns every js/css file, which starts with 
# a letter or a number, into an includeable asset manifest (similar to 
# what application.js and application.css already are). 
# You may want to omit this line for your application. 
config.assets.precompile += [/^[a-z0-9]\w+\.(css|js)$/] 

它是從activeadmin寶石匹配的資產,並宣佈他們作爲獨立的艙單和當資產管道試圖編制它們,產生了這個錯誤。

關於how the config.assets.precompile directive works in Rails, check out this Gist的更多詳情。