rake资产:预编译生产缓慢

时间:2014-03-09 22:46:49

标签: ruby-on-rails ruby assets production

我的ruby on rails app大约需要半小时才能完成部署。 最长的一步是

RAILS_ENV=production RAILS_GROUPS=assets bundle exec rake assets:precompile

大约需要1073155毫秒

我必须等待很长时间才能进行每次部署。

我用

ckeditor
rails_admin

我想是他们减慢我的部署速度,但我没有证据,我不知道如何

解决它。

我的其他环境如下:

rails 4.0.3
ruby 2.1.1

我的关于资产的production.rb是

config.serve_static_assets = false

# Compress JavaScripts and CSS.
config.assets.js_compressor = :uglifier
# config.assets.css_compressor = :sass

# Do not fallback to assets pipeline if a precompiled asset is missed.
config.assets.compile = true

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

# Version of your assets, change this if you want to expire all your assets.
config.assets.version = '1.0'

2 个答案:

答案 0 :(得分:2)

尝试跳过编译ckeditor资产

配置/环境/ production.rb

  require_relative '../../lib/assets/selective_assets_compressor'
  config.assets.js_compressor = SelectiveAssetsCompressor.new

LIB /资产/ selective_assets_compressor.rb

class SelectiveAssetsCompressor < Uglifier
  def initialize(options = {})
    super(options)
  end

  def compress(string)
    if string =~ /CKSource/
      string
    else
      super(string)
    end
  end
end

答案 1 :(得分:1)

对于更快的资产预编译,您可以在config / application.rb中将config.assets.initialize_on_precompile设置为false。 Heroku要求这是假的。

config.assets.initialize_on_precompile = false

如果你这样做,一定要测试rake资产:在本地预编译,因为没有加载完整的环境,不会加载引擎(或其他宝石),这可能导致资产丢失。

另一方面,您可以在本地部署之前执行资产预编译,并部署预编译的文件。