我在预编译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
答案 0 :(得分:1)
看起来我遇到的问题是我正在使用的一个gem sprangular
正在设置这个预编译规则:
Rails.application.config.assets.precompile += %w( bootstrap/* )
如果我注释掉这个规则并在Gemfile中找到我自己修改的gem版本,rake assets:precompile
现在可以正常工作。
我不完全确定他们为什么设置规则来预编译所有的boostrap文件。这有意义吗?
我已创建an issue in their Github repo以明确这是一个错误,还是我没有在我的应用中正确配置资产管道。
我会更新这个答案,因为我从那里的讨论中得到了澄清。也可以在这里提出建议。