未定义的变量:使用Rails,AngularJS和Bootstrap的“$ alert-padding”

时间:2015-03-03 12:49:36

标签: ruby-on-rails angularjs sass

我在预编译Rails项目的资产时遇到了问题。

以下是我正在使用的一些宝石的版本:

rails (4.2.0)
bootstrap-sass (3.3.3)
sass-rails (5.0.1)

该项目是一个AngularJS项目,从Rails Asset采购以下宝石:

rails-assets-bootstrap-additions (0.2.3)
rails-assets-angular-bootstrap (0.11.2)
rails-assets-bootstrap-sass-official (3.3.3)

README on the bootstrap-sass Github page之后,我将app/assets/stylesheets/application.css文件重命名为application.scss,并将其内容替换为:

@import "bootstrap-sprockets";
@import "bootstrap";

以下是我启动RAILS_ENV=production rake assets:precompile --trace时出现的错误:

** Execute assets:precompile
rake aborted!
Sass::SyntaxError: Undefined variable: "$alert-padding".
   (in /home/owner/.rvm/gems/ruby-2.1.5/gems/bootstrap-sass-3.3.3/assets/stylesheets/bootstrap/_alerts.scss:10)

我查看了ClothSword对this similar post的回答,但在我的情况下puts config.assets.precompile.inspect输出(lambda)>, /(?:\/|\\|\A)application\.(css|js)$/],我认为这是默认值。

有人会对此有更多的了解吗?您可以浏览来源here

1 个答案:

答案 0 :(得分:1)

看起来我遇到的问题是我正在使用的一个gem sprangular正在设置这个预编译规则:

Rails.application.config.assets.precompile += %w( bootstrap/* )

如果我注释掉这个规则并在Gemfile中找到我自己修改的gem版本,rake assets:precompile现在可以正常工作。

我不完全确定他们为什么设置规则来预编译所有的boostrap文件。这有意义吗?

我已创建an issue in their Github repo以明确这是一个错误,还是我没有在我的应用中正确配置资产管道。

我会更新这个答案,因为我从那里的讨论中得到了澄清。也可以在这里提出建议。