/
assets.rb
62 lines (51 loc) · 2.06 KB
/
assets.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
set :asset_directories, []
set(:shared_assets_path) { File.join(shared_path, 'assets') }
namespace :assets do
desc "Compress javascripts and stylesheets"
task :compress, :except => { :no_release => true } do
rubaidh_run_rake "assets:compress"
end
namespace :directories do
desc "[internal] Create all the shared asset directories"
task :create, :roles => [ :app, :web ], :except => { :no_release => true } do
asset_directories.each do |dir|
run "umask 0002 && mkdir -p #{File.join(shared_assets_path, dir)}"
end
end
desc "[internal] Symlink the shared asset directories into the new deployment"
task :symlink, :roles => [ :app, :web ], :except => { :no_release => true } do
asset_directories.each do |dir|
run <<-CMD
rm -rf #{latest_release}/#{dir} &&
ln -s #{shared_assets_path}/#{dir} #{latest_release}/#{dir}
CMD
end
end
end
desc "Create a backup of all the shared assets"
task :backup, :roles => [ :app, :web ], :except => { :no_release => true } do
tar = fetch(:tar, "tar")
rails_env = fetch(:rails_env, "production")
run "if -d [ #{shared_assets_path}; then cd #{shared_assets_path} && #{tar} cjf #{rails_env}-assets.tar.bz2 #{asset_directories.join(" ")}; fi"
end
task :download, :roles => [ :app, :web ], :except => { :no_release => true } do
unless asset_directories.empty?
backup
rails_env = fetch(:rails_env, "production")
get "#{shared_assets_path}/#{rails_env}-assets.tar.bz2", "#{rails_env}-assets.tar.bz2"
end
end
end
after 'deploy:setup', 'assets:directories:create'
after 'deploy:finalize_update', 'assets:directories:symlink'
# Add the assets directories to the list of dependencies we check for.
on :load do
asset_directories.each do |dir|
depend :remote, :directory, File.join(shared_assets_path, dir)
depend :remote, :command, fetch(:tar, "tar")
end
if fetch(:compress_assets, false)
depend :remote, :command, "/usr/java/jdk/bin/java"
before 'deploy:finalize_update', 'assets:compress'
end
end