1
0
Fork 0
mirror of https://github.com/capistrano/capistrano synced 2023-03-27 23:21:18 -04:00

Rails 3.1 Asset Pipeline support

This commit is contained in:
Chris Griego 2011-06-24 00:06:47 -05:00
parent a5d2e4c98c
commit f68fcae65d
3 changed files with 65 additions and 4 deletions

View file

@ -38,6 +38,10 @@ end
files = {
"Capfile" => unindent(<<-FILE),
load 'deploy' if respond_to?(:namespace) # cap2 differentiator
# Uncomment if you are using Rails' asset pipeline
# load 'deploy/assets'
Dir['vendor/gems/*/recipes/*.rb','vendor/plugins/*/recipes/*.rb'].each { |plugin| load(plugin) }
load 'config/deploy' # remove this line to skip loading any of the default tasks

View file

@ -28,7 +28,9 @@ _cset :deploy_via, :checkout
_cset(:deploy_to) { "/u/apps/#{application}" }
_cset(:revision) { source.head }
# Maintenance base filename
_cset :rails_env, "production"
_cset :rake, "rake"
_cset :maintenance_basename, "maintenance"
# =========================================================================
@ -384,8 +386,6 @@ namespace :deploy do
set :migrate_target, :latest
DESC
task :migrate, :roles => :db, :only => { :primary => true } do
rake = fetch(:rake, "rake")
rails_env = fetch(:rails_env, "production")
migrate_env = fetch(:migrate_env, "")
migrate_target = fetch(:migrate_target, :latest)
@ -395,7 +395,7 @@ namespace :deploy do
else raise ArgumentError, "unknown migration target #{migrate_target.inspect}"
end
run "cd #{directory}; #{rake} RAILS_ENV=#{rails_env} #{migrate_env} db:migrate"
run "cd #{directory} && #{rake} RAILS_ENV=#{rails_env} #{migrate_env} db:migrate"
end
desc <<-DESC

View file

@ -0,0 +1,57 @@
load 'deploy' unless defined?(_cset)
_cset :asset_env, "RAILS_GROUPS=assets"
_cset :assets_prefix, "assets"
before 'deploy:finalize_update', 'deploy:assets:symlink'
after 'deploy:update_code', 'deploy:assets:precompile'
namespace :deploy do
namespace :assets do
desc <<-DESC
[internal] This task will set up a symlink to the shared directory \
for the assets directory. Assets are shared across deploys to avoid \
mid-deploy mismatches between old application html asking for assets \
and getting a 404 file not found error. The assets cache is shared \
for efficiency. If you cutomize the assets path prefix, override the \
:assets_prefix variable to match.
DESC
task :symlink, :roles => :web, :except => { :no_release => true } do
run <<-CMD
rm -rf #{latest_release}/public/#{assets_prefix} &&
mkdir -p #{latest_release}/public &&
mkdir -p #{shared_path}/assets &&
ln -s #{shared_path}/assets #{latest_release}/public/#{assets_prefix}
CMD
end
desc <<-DESC
Run the asset precompilation rake task. You can specify the full path \
to the rake executable by setting the rake variable. You can also \
specify additional environment variables to pass to rake via the \
asset_env variable. The defaults are:
set :rake, "rake"
set :rails_env, "production"
set :asset_env, "RAILS_GROUPS=assets"
DESC
task :precompile, :roles => :web, :except => { :no_release => true } do
run "cd #{latest_release} && #{rake} RAILS_ENV=#{rails_env} #{asset_env} assets:precompile"
end
desc <<-DESC
Run the asset clean rake task. Use with caution, this will delete \
all of your compiled assets. You can specify the full path \
to the rake executable by setting the rake variable. You can also \
specify additional environment variables to pass to rake via the \
asset_env variable. The defaults are:
set :rake, "rake"
set :rails_env, "production"
set :asset_env, "RAILS_GROUPS=assets"
DESC
task :clean, :roles => :web, :except => { :no_release => true } do
run "cd #{latest_release} && #{rake} RAILS_ENV=#{rails_env} #{asset_env} assets:clean"
end
end
end