module CapistranoDeployManagement module RailsAssets def self.load_into(configuration) configuration.load do use_recipe :rails namespace :deploy do namespace :assets do desc 'Clear application cache (e.g. Memcached).' task :refresh_cache, roles: :app do run "cd #{current_path} && rake cache:clear RAILS_ENV=#{rails_env}" # Requires this rake task: (include here!?) # namespace :cache do # desc 'Clear memcache' # task clear: :environment do # Rails.cache.clear # end # end end desc 'Precompile assets if any assets have changed.' task :lazy_precompile do current_revision = "cat #{current_path}/REVISION" head_revision = "cat #{latest_release}/REVISION" assets_paths = "#{latest_release}/app/assets/ #{latest_release}/lib/assets/ #{latest_release}/vendor/assets/" run "svn log -r $(#{current_revision}):$(#{head_revision}) #{assets_paths}" # if capture("cd #{latest_release} && #{source.local.log(from)} vendor/assets/ app/assets/ | wc -l").to_i > 0 # run "cd #{latest_release} && #{rake} RAILS_ENV=#{rails_env} #{asset_env} assets:precompile" # else # logger.info "Skipping asset pre-compilation because there were no asset changes" # end end end end after 'deploy:update', 'deploy:assets:refresh_cache' end end end end