Rails 4:生产模式下资产预编译期间的CSS错误无效

时间:2016-06-15 18:15:13

标签: css ruby-on-rails-4 heroku production-environment precompile

我遇到资产预编译问题。当我尝试使用以下方法为生产模式预编译资产时:

RAILS_ENV=production bundle exec rake assets:precompile

出现此错误:

DEPRECATION WARNING: The configuration option `config.serve_static_assets` has been renamed to `config.serve_static_files` to clarify its role (it merely enables serving everything in the `public` folder and is unrelated to the asset pipeline). The `serve_static_assets` alias will be removed in Rails 5.0. Please migrate your configuration files accordingly. (called from block in tsort_each at /usr/local/lib/ruby/2.2.0/tsort.rb:226)
I, [2016-06-15T18:06:55.828561 #19627]  INFO -- : Writing /home/rails/Desktop/hammasir/public/assets/bootstrap.min-f3ab05f17df205c2d2a559852b8609eaa090ea127ff142bfb6ebf090ee187fd4.css
I, [2016-06-15T18:06:55.913275 #19627]  INFO -- : Writing /home/rails/Desktop/hammasir/public/assets/bootstrap.min-f3ab05f17df205c2d2a559852b8609eaa090ea127ff142bfb6ebf090ee187fd4.css.gz
rake aborted!
Sass::SyntaxError: Invalid CSS after "}": expected selector or at-rule, was "}"
(sass):86
Tasks: TOP => assets:precompile
(See full trace by running task with --trace)
zlib(finalizer): Zlib::GzipWriter object must be closed explicitly.
zlib(finalizer): the stream was freed prematurely.

其他一些css文件也有同样的问题。看来提到的文件还可以,没有任何遗漏}或者; 。此外,所有这些文件都是众所周知的CSS文件,如bootstrap!我用不同的css调试器检查了这些文件,结果不同。一次没有任何错误只是一些警告,一次在多行中有类似的错误:

Sorry, the at-rule @-webkit-keyframes is not implemented. 

如果您有解决此问题的方法,请与我们联系。

此外,我在Heroku上部署了我的应用程序,并尝试在成功部署后添加这些文件。不幸的是,这些文件导致我的应用程序崩溃。所以,我想我应该找到一种方法在生产模式下成功预编译它们。

1 个答案:

答案 0 :(得分:1)

当我找到答案时,我在这里写这篇文章,希望它对其他人有用。

要解决DEPRECATION WARNING,请查看以下链接:

Asset pipeline DEPRECATION WARNING tsort.rb:226

关于错误,您应该找到哪个文件会导致错误。生成的错误和其中提到的文件具有误导性。

您可以使用assets.rb文件查找哪些文件(文件)包含语法错误。在生产模式中注释或删除assets.rb中除一个和重做资产预编译命令之外的所有引用文件:

RAILS_ENV=production bundle exec rake assets:precompile

并为所有css文件重复它以了解哪个包含错误。这次此命令的输出将有所帮助,并完全参考问题。然后,很容易找到错误并修复它。