lib/ash/drupal.rb in capistrano-ash-1.1.19 vs lib/ash/drupal.rb in capistrano-ash-1.2.0
- old
+ new
@@ -12,16 +12,16 @@
# Setting defaults
# --------------------------------------------
proc{_cset( :multisites, {"#{application}" => "#{application}"} )}
set :drush_bin, "drush"
_cset :dump_options, "" # blank options b/c of MYISAM engine (unless anyone knows options that should be included)
-
-
+
+
# --------------------------------------------
# Ubercart Files/Folders
# assumes ubercart files are located
- # within a files/ubercart directory
+ # within a files/ubercart directory
# for each multisite
# --------------------------------------------
set :uc_root, "ubercart"
set :uc_downloadable_products_root, "downloadable_products"
set :uc_encryption_keys_root, "keys"
@@ -29,13 +29,18 @@
# --------------------------------------------
# Calling our Methods
# --------------------------------------------
after "deploy:setup", "deploy:setup_local"
after "deploy:finalize_update", "ash:fixperms"
- after "deploy:symlink", "drupal:symlink"
+ # after "deploy:create_symlink", "drupal:symlink"
+
+ # workaround for issues with capistrano v2.13.3 and
+ # before/after callbacks not firing for 'deploy:symlink'
+ # or 'deploy:create_symlink'
+ after "deploy", "drupal:symlink"
after "drupal:symlink","drupal:protect"
- after "deploy", "drupal:clearcache"
+ after "drupal:symlink", "drupal:clearcache"
after "deploy", "deploy:cleanup"
# --------------------------------------------
# Overloaded Methods
# --------------------------------------------
@@ -43,11 +48,11 @@
desc "Setup local files necessary for deployment"
task :setup_local do
# attempt to create files needed for proper deployment
system("cp .htaccess htaccess.dist")
end
-
+
desc "Setup shared application directories and permissions after initial setup"
task :setup_shared do
# remove Capistrano specific directories
run "rm -Rf #{shared_path}/log"
run "rm -Rf #{shared_path}/pids"
@@ -64,11 +69,11 @@
desc "[internal] Touches up the released code. This is called by update_code after the basic deploy finishes."
task :finalize_update, :roles => :web, :except => { :no_release => true } do
# remove shared directories
multisites.each_pair do |folder, url|
- if folder != url
+ if folder != url
run "mv #{latest_release}/sites/#{folder} #{latest_release}/sites/#{url}"
end
run "rm -Rf #{latest_release}/sites/#{url}/files"
end
end
@@ -87,30 +92,30 @@
run "#{drush_bin} -l #{url} -r #{latest_release} vdel --yes site_offline"
end
end
end
end
-
+
# --------------------------------------------
# Remote/Local database migration tasks
# --------------------------------------------
namespace :db do
task :local_export do
mysqldump = fetch(:mysqldump, "mysqldump")
dump_options = fetch(:dump_options, "")
-
+
system "#{mysqldump} #{dump_options} --opt -h#{db_local_host} -u#{db_local_user} -p#{db_local_pass} #{db_local_name} | gzip -c --best > #{db_local_name}.sql.gz"
end
-
+
desc "Create a compressed MySQL dumpfile of the remote database"
task :remote_export, :roles => :db do
mysqldump = fetch(:mysqldump, "mysqldump")
dump_options = fetch(:dump_options, "")
-
+
run "#{mysqldump} #{dump_options} --opt -h#{db_remote_host} -u#{db_remote_user} -p#{db_remote_pass} #{db_remote_name} | gzip -c --best > #{deploy_to}/#{db_remote_name}.sql.gz"
end
-
+
end
namespace :backup do
desc "Perform a backup of database files"
task :db, :roles => :db do
@@ -135,27 +140,27 @@
desc "Symlink shared directories"
task :symlink, :roles => :web, :except => { :no_release => true } do
multisites.each_pair do |folder, url|
# symlinks the appropriate environment's settings.php file
symlink_config_file
-
+
run "ln -nfs #{shared_path}/#{url}/files #{latest_release}/sites/#{url}/files"
run "#{drush_bin} -l #{url} -r #{current_path} vset --yes file_directory_path sites/#{url}/files"
end
end
-
+
desc <<-DESC
Symlinks the appropriate environment's settings file within the proper sites directory
-
+
Assumes the environment's settings file will be in one of two formats:
settings.<environment>.php => new default
settings.php.<environment> => deprecated
DESC
task :symlink_config_file, :roles => :web, :except => { :no_release => true} do
multisites.each_pair do |folder, url|
drupal_app_site_dir = " #{latest_release}/sites/#{url}"
-
+
case true
when remote_file_exists?("#{drupal_app_site_dir}/settings.#{stage}.php")
run "ln -nfs #{drupal_app_site_dir}/settings.#{stage}.php #{drupal_app_site_dir}/settings.php"
when remote_file_exists?("#{drupal_app_site_dir}/settings.php.#{stage}")
run "ln -nfs #{drupal_app_site_dir}/settings.php.#{stage} #{drupal_app_site_dir}/settings.php"
@@ -176,11 +181,11 @@
task :clearcache, :roles => :web, :except => { :no_release => true } do
multisites.each_pair do |folder, url|
run "#{drush_bin} -l #{url} -r #{current_path} cache-clear all"
end
end
-
+
desc "Protect system files"
task :protect, :roles => :web, :except => { :no_release => true } do
multisites.each_pair do |folder, url|
run "chmod 644 #{latest_release}/sites/#{url}/settings.php*"
end
@@ -194,11 +199,11 @@
namespace :ubercart do
task :default, :roles => :web, :except => { :no_release => true } do
# setup necessary directories within our shared directory
setup_ubercart_shared
- # move the sites/*/files/downloadable_products
+ # move the sites/*/files/downloadable_products
# to the shared directory via rsync
secure_downloadable_files
# move the sites/*/files/keys
# to the shared directory
@@ -217,19 +222,19 @@
run "mkdir -p #{shared_path}/#{url}/#{uc_root}"
end
end
desc <<-DESC
- Moves downloadable files from the public directory (Drupal root) to the shared
+ Moves downloadable files from the public directory (Drupal root) to the shared
directories
Example:
- sites/abc/files/ubercart/products
- sites/xyz/files/ubercart/downloadable_products
+ sites/abc/files/ubercart/products
+ sites/xyz/files/ubercart/downloadable_products
are moved to:
- shared/abc/ubercart/products
+ shared/abc/ubercart/products
shared/xyz/ubercart/downloadable_products
DESC
task :secure_downloadable_files, :except => { :no_release => true } do
# loop through the multisites and move files
multisites.each_pair do |folder, url|
@@ -243,35 +248,35 @@
else
logger.important "Failed to rsync the ubercart downloadable products in #{ubercart_dir} because the directory doesn't exist"
end
- # update the ubercart's database tracking of where the
- # root file path is for downloadable products. This should
+ # update the ubercart's database tracking of where the
+ # root file path is for downloadable products. This should
# be set as relative to the root of the drupal directory
run "#{drush_bin} -l #{url} -r #{latest_release} vset --yes uc_file_base_dir ../../shared/#{url}/#{uc_root}/#{uc_downloadable_products_root}"
end
end
desc <<-DESC
- Moves encryption key files from the public directory (Drupal root) to the shared
+ Moves encryption key files from the public directory (Drupal root) to the shared
directories
Example:
- sites/abc/files/ubercart/keys
- sites/xyz/files/ubercart/keys
+ sites/abc/files/ubercart/keys
+ sites/xyz/files/ubercart/keys
are moved to:
- shared/abc/ubercart/keys
+ shared/abc/ubercart/keys
shared/xyz/ubercart/keys
DESC
task :secure_encryption_key, :roles => :web, :except => { :no_release => true } do
# loop through the multisites and move keys
multisites.each_pair do |folder, url|
run "mkdir -p #{shared_path}/#{url}/#{uc_root}/#{uc_encryption_keys_root}"
- # update the ubercart's database tracking of where the
- # root file path is for encryption keys. This should
+ # update the ubercart's database tracking of where the
+ # root file path is for encryption keys. This should
# be set as relative to the root of the drupal directory
run "#{drush_bin} -l #{url} -r #{latest_release} vset --yes uc_credit_encryption_path ../../shared/#{url}/#{uc_root}/#{uc_encryption_keys_root}"
end
end
end
\ No newline at end of file