当Heroku尝试编译我的Rails应用程序的资产时出现错误:
remote: -----> Preparing app for Rails asset pipeline
remote: Running: rake assets:precompile
remote: rake aborted!
remote: Sass::SyntaxError: Undefined variable: "$btn-default-border".
remote: (in /tmp/build_8402012299c8c367a1dc15dd7f5cd85f/app/assets/stylesheets/auctions.css.scss:42)
remote: /tmp/build_8402012299c8c367a1dc15dd7f5cd85f/app/assets/stylesheets/auctions.css.scss:42
当我在本地运行rake assets:precompile
时,它可以正常工作。
这是我的application.css.scss
/*
*
*= require bootstrap-datepicker3
*/
@import "variables";
@import "bootstrap-sprockets";
@import "bootstrap";
@import "auctions";
auctions.css.scss
.form-control-feedback {
pointer-events: all;
&:hover {
cursor:pointer;
border: 1px solid $btn-default-border;
background: $gray-lighter;
border-radius: 5px;
}
}
为什么它在本地工作但不在Heroku上工作? Heroku是否试图在没有其他依赖项的情况下编译auctions.css.scss
?
答案 0 :(得分:2)
尝试在Rails.application.config.assets.version
中碰撞config/initializers/assets.rb
。
在我的应用程序清单文件中将Sprockets require
切换为@import
行之后,我就遇到了与Heroku同样的问题。 (我遇到CSS规则优先级的问题,并意识到我做错了。本文指导我更好的约定:https://content.pivotal.io/blog/structure-your-sass-files-with-import)
我通过碰撞Rails.application.config.assets.version
中的config/initializers/assets.rb
来修复它。
Bumping the version促使我的应用程序重新处理所有资产文件,这似乎重置了对某些文件及其对变量的依赖性的理解。
答案 1 :(得分:0)
确保production.rb具有以下代码或者添加它
# Precompile additional assets (application.js, application.css, and all non-JS/CSS are already added)
config.assets.precompile += %w( *.css *.js )
答案 2 :(得分:0)
转到文件config/initializers/assests.rb
添加行或更新。
Rails.application.config.assets.precompile += [/.*\.js/,/.*\.scss/]
然后跑
bundle exec assets:precompile