From a69f59ef51562e1775866cde67c3c6e30e42b22b Mon Sep 17 00:00:00 2001 From: Sam Date: Thu, 6 Feb 2014 16:55:53 +1100 Subject: [PATCH] FEATURE: much faster asset precompilation with a redis backed cache --- lib/tasks/assets.rake | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/lib/tasks/assets.rake b/lib/tasks/assets.rake index 67bee04f7df..cca89c7bbd1 100644 --- a/lib/tasks/assets.rake +++ b/lib/tasks/assets.rake @@ -8,6 +8,28 @@ task 'assets:precompile:before' do # in the past we applied a patch that removed asset postfixes, but it is terrible practice # leaving very complicated build issues # https://github.com/rails/sprockets-rails/issues/49 + + # let's make precompile faster using redis magic + require 'sprockets' + require 'digest/sha1' + + module ::Sprockets + class UglifierCompressor + def evaluate(context, locals, &block) + + digest = Digest::SHA1.hexdigest(data) + key = "SPROCKETS_#{digest}" + + unless compiled = $redis.get(key) + compiled = Uglifier.new(:comments => :none).compile(data) + $redis.setex(key, 1.week, compiled) + end + $redis.expire(key, 1.week) + compiled + end + end + end + end task 'assets:precompile' => 'assets:precompile:before'