ActiveAdmin资产预编译错误

时间:2011-12-21 15:22:51

标签: ruby-on-rails sass activeadmin

ActiveAdmin正在给我一个

Undefined mixin 'global-reset'.
尝试运行时出现

错误

rake assets:precompile

ActiveAdmin是0.3.4。 我的Gemfile中有ActiveAdmin和资产组,包含sass,coffee-rails和uglifier。

3 个答案:

答案 0 :(得分:14)

我偶然发现了这一点。我在config.assets.precompile文件中的production.rb指令中遇到的问题。我在那里有一个正则表达式,它匹配来自activeadmin gem的一些资产,这些资产不应该与预编译匹配。将选项更改为以下内容对我有用:

# 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 gem的资产并将它们声明为独立清单,当资产管道试图对它们进行编译时,就会产生此错误。

有关how the config.assets.precompile directive works in Rails, check out this Gist的更多详情。

答案 1 :(得分:11)

正如@dimitar所指出的那样,问题确实存在,因为资产管道正在尝试编译部分内容,因为资源管道正在尝试编译部分内容,并且因为它们不是自己编译的,所以会出现依赖性问题。

根据您的应用程序,您可能需要全部捕获,特别是如果您在多个子文件夹中有许多JS,CoffeScript和SCSS / SASS文件。在这种情况下,您可能会遇到rails抱怨,因为删除catch all时没有为生产编译某些东西。

解决方法是捕获所有排除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 )

答案 2 :(得分:0)

在您的CSS文件中,您很可能拥有:

@include 'global-reset';

但是,您尝试导入全局重置,因此应将其更改为:

@import 'global-reset';

希望这有帮助!