Sha256: 10df4e0281c618bbe49740966f83d3135f53d45436bd516a7a6be018f20e4a29
Contents?: true
Size: 1.33 KB
Versions: 5
Compression:
Stored size: 1.33 KB
Contents
# lib/assets_version.rb require 'yaml' require 'english' require 'ostruct' class AssetsVersion < OpenStruct # ensure this file is symlinked to your Capistrano shared folder # and is kept between deployments REVISIONS_FILE = "config/assets_version.yml" ASSETS_DEPENDENCIES = { 'gemfile_lock' => 'Gemfile.lock', 'assets_dir' => 'app/assets', 'vendor_dir' => 'vendor', } def self.needs_precompile? @last = last_version @current = current @last.incomplete? || @current.incomplete? || @current != @last end def self.last_version revisions = load_revisions_from_yaml_file AssetsVersion.new(revisions) end def self.current revisions = {} ASSETS_DEPENDENCIES.each do |key, file| revisions[key] = git_revision_for(file) end AssetsVersion.new(revisions) end def self.load_revisions_from_yaml_file YAML.load_file(REVISIONS_FILE) rescue Hash.new end def self.git_revision_for(file) rev = `git log -n 1 --format="%H" #{file}` $CHILD_STATUS.success? ? rev.strip : nil end def save_to_yaml File.open(REVISIONS_FILE, "w") { |f| f.write(to_json) } end def incomplete? revisions = ASSETS_DEPENDENCIES.keys.collect { |k| send(k) } revisions.any?(&:nil?) || revisions.any?(&:empty?) end def to_json YAML.to_json(marshal_dump) end end
Version data entries
5 entries across 5 versions & 1 rubygems