我遇到资产预编译问题。当我尝试使用以下方法为生产模式预编译资产时:
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上部署了我的应用程序,并尝试在成功部署后添加这些文件。不幸的是,这些文件导致我的应用程序崩溃。所以,我想我应该找到一种方法在生产模式下成功预编译它们。
答案 0 :(得分:1)
当我找到答案时,我在这里写这篇文章,希望它对其他人有用。
要解决DEPRECATION WARNING,请查看以下链接:
Asset pipeline DEPRECATION WARNING tsort.rb:226
关于错误,您应该找到哪个文件会导致错误。生成的错误和其中提到的文件具有误导性。
您可以使用assets.rb
文件查找哪些文件(文件)包含语法错误。在生产模式中注释或删除assets.rb
中除一个和重做资产预编译命令之外的所有引用文件:
RAILS_ENV=production bundle exec rake assets:precompile
并为所有css文件重复它以了解哪个包含错误。这次此命令的输出将有所帮助,并完全参考问题。然后,很容易找到错误并修复它。