在Ruby on Rails中压缩资产3

时间:2012-12-27 11:46:17

标签: ruby-on-rails asset-pipeline sprockets yui-compressor

我在production.rb

中有以下配置
 # Disable Rails's static asset server (Apache or nginx will already do this)
  config.serve_static_assets = false

  # Compress JavaScripts and CSS
  config.assets.compress = true

  # Choose the compressors to use
  config.assets.js_compressor  = :uglifier
  config.assets.css_compressor = :yui

  # Don't fallback to assets pipeline if a precompiled asset is missed
  config.assets.compile = true

  # Generate digests for assets URLs.
  config.assets.digest = true

但是当生产服务器上的ruby on rails应用程序出现以下错误时:

Error compiling CSS asset

LoadError: cannot load such file -- yui-compressor

在评论专线LoadError: cannot load such file -- yui-compressor上,一切顺利 所有我需要一个压缩机,gzip压缩资产然后发送以提高性能!所以,这里有什么问题或者还有其他选择吗?



更新:
另外javascript压缩无效,因为firefox的yslow插件也需要压缩javascripts。

2 个答案:

答案 0 :(得分:7)

你是否在你的Gemfile中加入了yui-compressor gem?如果没有,那么包括它,运行'bundle install',然后Rails应该能够找到它。

答案 1 :(得分:3)

我发现必须在网络服务器上启用压缩才能生效。
所需要的只是添加以下内容:

AddOutputFilterByType DEFLATE text/html text/css application/x-javascript application/javascript
对于我的案例,

在Apache {phusion passenger}的<VirtualHost *:80></VirtualHost>指令中。