Created
September 7, 2016 00:21
-
-
Save steveh/6b97129a41d44a401cb5cb1ea60f213f to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require "fileutils" | |
Rake::Task["assets:precompile"].enhance do | |
Rake::Task["assets:precompile:partner"].invoke | |
end | |
Rake::Task["assets:clobber"].enhance ["assets:clobber:partner"] | |
namespace :assets do | |
# try to log like Sprockets even though their stuff is all private | |
def log(msg) | |
STDERR.puts msg | |
Rails.logger.info(msg) if Rails.respond_to?(:logger) && Rails.logger | |
end | |
def partner | |
ENV["PARTNER"] || "example" | |
end | |
def base_path | |
Rails.root.join("public", "assets", partner) | |
end | |
def match_pattern | |
/(.+)-[0-9a-f]{64}(.+)/ | |
end | |
def patterns | |
["*.html", "*.ico"] | |
end | |
def partner_files | |
patterns.each do |pattern| | |
files = Dir[base_path + pattern] | |
groups = files.group_by do |file| | |
match = File.basename(file).match(match_pattern) | |
match[1..2].join("") | |
end | |
groups.each do |key, group| | |
src = group.sort_by { |file| File.mtime(file) }.last | |
dst = Rails.root.join("public", key) | |
yield src, dst | |
end | |
end | |
end | |
namespace :precompile do | |
desc "Copy the newest error page assets into /public" | |
task :partner do | |
partner_files do |src,dst| | |
log "copy #{src} to #{dst}" | |
FileUtils.cp src, dst | |
end | |
end | |
end | |
namespace :clobber do | |
desc "Remove the error page assets in /public" | |
task :partner do | |
partner_files do |src,dst| | |
log "clobber #{dst}" | |
FileUtils.rm_f dst | |
end | |
end | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment