capistrano-ash 1.0.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/README.textile CHANGED
@@ -1,3 +1,25 @@
1
+ h2. Overview
2
+
3
+ Run the following commands in the command line from the project's root directory
4
+
5
+ <pre>
6
+ <code>
7
+ capify .
8
+ rm -Rf config/deploy.rb; mkdir -p config/deploy
9
+ touch config/deploy/staging.rb config/deploy/production.rb
10
+ </code>
11
+ </pre>
12
+
13
+ After you have edited your @Capfile@ and @staging.rb@ and @production.rb@ files, you will need to run the following command only once per environment:
14
+
15
+ <pre>
16
+ <code>
17
+ cap staging deploy:setup
18
+ cap production deploy:setup
19
+ </code>
20
+ </pre>
21
+
22
+
1
23
  h2. Deploying Magento
2
24
 
3
25
  Check the "Wiki":https://github.com/augustash/capistrano-ash/wiki for detailed installation instructions.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.0.0
1
+ 1.1.0
data/lib/ash/base.rb CHANGED
@@ -4,7 +4,6 @@ Dir['vendor/plugins/*/recipes/*.rb'].each { |plugin| load(plugin) }
4
4
 
5
5
  # Required gems/libraries
6
6
  require 'rubygems'
7
- require 'railsless-deploy'
8
7
  require 'ash/common'
9
8
  require 'capistrano/ext/multistage'
10
9
 
@@ -92,8 +91,8 @@ configuration.load do
92
91
  desc "Set standard permissions for Ash servers"
93
92
  task :fixperms, :except => { :no_release => true } do
94
93
  # chmod the files and directories.
95
- sudo "find #{latest_release} -type d -exec chmod 755 {} \\;"
96
- sudo "find #{latest_release} -type f -exec chmod 644 {} \\;"
94
+ try_sudo "find #{latest_release} -type d -exec chmod 755 {} \\;"
95
+ try_sudo "find #{latest_release} -type f -exec chmod 644 {} \\;"
97
96
  end
98
97
 
99
98
  desc "Test: Task used to verify Capistrano is working. Prints operating system name."
@@ -159,35 +158,50 @@ configuration.load do
159
158
  web
160
159
  end
161
160
 
162
- desc "Perform a backup of web files"
163
- task :web, :roles => :web do
164
- puts "Backing up web files (user uploaded content and previous release)"
161
+ desc <<-DESC
162
+ Requires the rsync package to be installed.
163
+
164
+ Performs a file-level backup of the application and any assets \
165
+ from the shared directory that have been symlinked into the \
166
+ applications root or sub-directories.
165
167
 
166
- if !backup_exclude.nil? && !backup_exclude.empty?
167
- logger.debug "processing backup exclusions..."
168
- backup_exclude.each do |pattern|
169
- exclude_string << "--exclude '#{pattern}' "
168
+ You can specify which files or directories to exclude from being \
169
+ backed up (i.e., log files, sessions, cache) by setting the \
170
+ :backup_exclude variable
171
+ set(:backup_exclude) { [ "var/", "tmp/", logs/debug.log ] }
172
+ DESC
173
+ task :web, :roles => :web do
174
+ if previous_release
175
+ puts "Backing up web files (user uploaded content and previous release)"
176
+
177
+ if backup_exclude.present?
178
+ logger.debug "processing backup exclusions..."
179
+ backup_exclude.each do |pattern|
180
+ exclude_string << "--exclude '#{pattern}' "
181
+ end
182
+ logger.debug "Exclude string = #{exclude_string}"
170
183
  end
171
- logger.debug "Exclude string = #{exclude_string}"
184
+
185
+ # Copy the previous release to the /tmp directory
186
+ logger.debug "Copying previous release to the /tmp/#{release_name} directory"
187
+ run "rsync -avzrtpL #{exclude_string} #{current_path}/ /tmp/#{release_name}/"
188
+ # create the tarball of the previous release
189
+ set :archive_name, "release_B4_#{release_name}.tar.gz"
190
+ logger.debug "Creating a Tarball of the previous release in #{backups_path}/#{archive_name}"
191
+ run "cd /tmp && tar -cvpf - ./#{release_name}/ | gzip -c --best > #{backups_path}/#{archive_name}"
192
+
193
+ # remove the the temporary copy
194
+ logger.debug "Removing the tempory copy"
195
+ run "rm -rf /tmp/#{release_name}"
196
+ else
197
+ logger.important "no previous release to backup; backup of files skipped"
172
198
  end
173
-
174
- # Copy the previous release to the /tmp directory
175
- logger.debug "Copying previous release to the /tmp/#{release_name} directory"
176
- run "rsync -avzrtpL #{exclude_string} #{current_path}/ /tmp/#{release_name}/"
177
- # create the tarball of the previous release
178
- set :archive_name, "release_B4_#{release_name}.tar.gz"
179
- logger.debug "Creating a Tarball of the previous release in #{backups_path}/#{archive_name}"
180
- run "cd /tmp && tar -cvpf - ./#{release_name}/ | gzip -c --best > #{backups_path}/#{archive_name}"
181
-
182
- # remove the the temporary copy
183
- logger.debug "Removing the tempory copy"
184
- run "rm -rf /tmp/#{release_name}"
185
199
  end
186
200
 
187
201
  desc "Perform a backup of database files"
188
202
  task :db, :roles => :db do
189
203
  puts "Backing up the database now and putting dump file in the previous release directory"
190
- # define the filename (include the current_path so the dump file will be within the dirrectory)
204
+ # define the filename (include the current_path so the dump file will be within the directory)
191
205
  filename = "#{current_path}/#{dbname}_dump-#{Time.now.to_s.gsub(/ /, "_")}.sql.gz"
192
206
  # dump the database for the proper environment
193
207
  run "mysqldump -u #{dbuser} -p #{dbname} | gzip -c --best > #{filename}" do |ch, stream, out|
data/lib/ash/drupal.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  # Require our base library.
2
2
  require 'ash/base'
3
+ require 'railsless-deploy'
3
4
 
4
5
  configuration = Capistrano::Configuration.respond_to?(:instance) ?
5
6
  Capistrano::Configuration.instance(:must_exist) :
@@ -31,13 +32,15 @@ configuration.load do
31
32
  desc "Setup shared application directories and permissions after initial setup"
32
33
  task :setup_shared, :roles => :web do
33
34
  # remove Capistrano specific directories
34
- run "rm -Rf #{shared_path}/log"
35
- run "rm -Rf #{shared_path}/pids"
36
- run "rm -Rf #{shared_path}/system"
35
+ run<<-CMD
36
+ rm -Rf #{shared_path}/log &&
37
+ rm -Rf #{shared_path}/pids &&
38
+ rm -Rf #{shared_path}/system
39
+ CMD
37
40
 
38
41
  # create shared directories
39
42
  multisites.each_pair do |folder, url|
40
- run "mkdir -p #{shared_path}/#{url}/files"
43
+ run "mkdir -p #{shared_path}/#{url}/files"
41
44
  end
42
45
 
43
46
  # set correct permissions
@@ -48,8 +51,8 @@ configuration.load do
48
51
  task :finalize_update, :except => { :no_release => true } do
49
52
  # remove shared directories
50
53
  multisites.each_pair do |folder, url|
51
- run "mv #{latest_release}/sites/#{folder} #{latest_release}/sites/#{url}"
52
- run "rm -Rf #{latest_release}/sites/#{url}/files"
54
+ run "mv #{latest_release}/sites/#{folder} #{latest_release}/sites/#{url}"
55
+ run "rm -Rf #{latest_release}/sites/#{url}/files"
53
56
  end
54
57
  end
55
58
 
@@ -75,7 +78,7 @@ configuration.load do
75
78
  task :db, :roles => :db do
76
79
  puts "Backing up the database now and putting dump file in the previous release directory"
77
80
  multisites.each_pair do |folder, url|
78
- # define the filename (include the current_path so the dump file will be within the dirrectory)
81
+ # define the filename (include the current_path so the dump file will be within the directory)
79
82
  filename = "#{current_path}/#{folder}_dump-#{Time.now.to_s.gsub(/ /, "_")}.sql.gz"
80
83
  # dump the database for the proper environment
81
84
  run "#{drush_bin} -l #{url} -r #{current_path} sql-dump | gzip -c --best > #{filename}"
@@ -90,9 +93,11 @@ configuration.load do
90
93
  desc "Symlink shared directories"
91
94
  task :symlink, :except => { :no_release => true } do
92
95
  multisites.each_pair do |folder, url|
93
- run "ln -nfs #{shared_path}/#{url}/files #{current_release}/sites/#{url}/files"
94
- run "ln -nfs #{latest_release}/sites/#{url}/settings.php.#{stage} #{latest_release}/sites/#{url}/settings.php"
95
- run "#{drush_bin} -l #{url} -r #{current_path} vset --yes file_directory_path sites/#{url}/files"
96
+ run<<-CMD
97
+ ln -nfs #{shared_path}/#{url}/files #{latest_release}/sites/#{url}/files &&
98
+ ln -nfs #{latest_release}/sites/#{url}/settings.php.#{stage} #{latest_release}/sites/#{url}/settings.php &&
99
+ #{drush_bin} -l #{url} -r #{current_path} vset --yes file_directory_path sites/#{url}/files
100
+ CMD
96
101
  end
97
102
  end
98
103
 
@@ -0,0 +1,31 @@
1
+ # Require our base drupal library
2
+ require 'ash/drupal'
3
+
4
+ configuration = Capistrano::Configuration.respond_to?(:instance) ?
5
+ Capistrano::Configuration.instance(:must_exist) :
6
+ Capistrano.configuration(:must_exist)
7
+
8
+ configuration.load do
9
+ # --------------------------------------------
10
+ # Overloaded Methods
11
+ # --------------------------------------------
12
+ namespace :deploy do
13
+ desc "Setup shared application directories and permissions after initial setup"
14
+ task :setup_shared, :roles => :web do
15
+ # remove Capistrano specific directories
16
+ run<<-CMD
17
+ rm -Rf #{shared_path}/log &&
18
+ rm -Rf #{shared_path}/pids &&
19
+ rm -Rf #{shared_path}/system
20
+ CMD
21
+
22
+ # create shared directories
23
+ multisites.each_pair do |folder, url|
24
+ run "mkdir -p #{shared_path}/#{url}/files"
25
+ end
26
+
27
+ # set correct permissions for a shared hosting environment
28
+ run "chmod -R 755 #{shared_path}/*"
29
+ end
30
+ end
31
+ end
@@ -1,5 +1,6 @@
1
1
  # Required base libraries
2
2
  require 'ash/base'
3
+ require 'railsless-deploy'
3
4
 
4
5
  # Bootstrap Capistrano instance
5
6
  configuration = Capistrano::Configuration.respond_to?(:instance) ?
data/lib/ash/magento.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  # Required base libraries
2
2
  require 'ash/base'
3
+ require 'railsless-deploy'
3
4
 
4
5
  # Bootstrap Capistrano instance
5
6
  configuration = Capistrano::Configuration.respond_to?(:instance) ?
data/lib/ash/wordpress.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  # Require our base library.
2
2
  require 'ash/base'
3
+ require 'railsless-deploy'
3
4
 
4
5
  configuration = Capistrano::Configuration.respond_to?(:instance) ?
5
6
  Capistrano::Configuration.instance(:must_exist) :
@@ -26,14 +27,17 @@ namespace :deploy do
26
27
  desc "Setup shared application directories and permissions after initial setup"
27
28
  task :setup_shared, :roles => :web do
28
29
  # remove Capistrano specific directories
29
- run "rm -Rf #{shared_path}/log"
30
- run "rm -Rf #{shared_path}/pids"
31
- run "rm -Rf #{shared_path}/system"
32
-
30
+ run<<-CMD
31
+ rm -Rf #{shared_path}/log &&
32
+ rm -Rf #{shared_path}/pids &&
33
+ rm -Rf #{shared_path}/system
34
+ CMD
35
+
33
36
  # create shared directories
34
- run "mkdir -p #{shared_path}/uploads"
35
- run "mkdir -p #{shared_path}/cache"
36
-
37
+ run<<-CMD
38
+ mkdir -p #{shared_path}/uploads &&
39
+ mkdir -p #{shared_path}/cache
40
+ CMD
37
41
  # set correct permissions
38
42
  run "chmod -R 777 #{shared_path}/*"
39
43
  end
@@ -41,11 +45,16 @@ namespace :deploy do
41
45
  desc "[internal] Touches up the released code. This is called by update_code after the basic deploy finishes."
42
46
  task :finalize_update, :except => { :no_release => true } do
43
47
  # remove shared directories
44
- run "rm -Rf #{latest_release}/#{uploads_path}"
45
- run "rm -Rf #{latest_release}/wp-content/cache"
48
+ run<<-CMD
49
+ rm -Rf #{latest_release}/#{uploads_path} &&
50
+ rm -Rf #{latest_release}/wp-content/cache
51
+ CMD
52
+
46
53
  # Removing cruft files.
47
- run "rm -Rf #{latest_release}/license.txt"
48
- run "rm -Rf #{latest_release}/readme.html"
54
+ run<<-CMD
55
+ rm -Rf #{latest_release}/license.txt &&
56
+ rm -Rf #{latest_release}/readme.html
57
+ CMD
49
58
  end
50
59
  end
51
60
 
@@ -55,9 +64,11 @@ end
55
64
  namespace :wordpress do
56
65
  desc "Links the correct settings file"
57
66
  task :symlink do
58
- run "ln -nfs #{shared_path}/uploads #{current_release}/#{uploads_path}"
59
- run "ln -nfs #{shared_path}/cache #{current_release}/wp-content/cache"
60
- run "ln -nfs #{latest_release}/wp-config.php.#{stage} #{latest_release}/wp-config.php"
67
+ run<<-CMD
68
+ ln -nfs #{shared_path}/uploads #{current_release}/#{uploads_path} &&
69
+ ln -nfs #{shared_path}/cache #{current_release}/wp-content/cache &&
70
+ ln -nfs #{latest_release}/wp-config.php.#{stage} #{latest_release}/wp-config.php
71
+ CMD
61
72
  end
62
73
 
63
74
  desc "Set URL in database"
@@ -0,0 +1,32 @@
1
+ # Require our base drupal library
2
+ require 'ash/wordpress'
3
+
4
+ configuration = Capistrano::Configuration.respond_to?(:instance) ?
5
+ Capistrano::Configuration.instance(:must_exist) :
6
+ Capistrano.configuration(:must_exist)
7
+
8
+ configuration.load do
9
+ # --------------------------------------------
10
+ # Overloaded Methods
11
+ # --------------------------------------------
12
+ namespace :deploy do
13
+ desc "Setup shared application directories and permissions after initial setup"
14
+ task :setup_shared, :roles => :web do
15
+ # remove Capistrano specific directories
16
+ run<<-CMD
17
+ rm -Rf #{shared_path}/log &&
18
+ rm -Rf #{shared_path}/pids &&
19
+ rm -Rf #{shared_path}/system
20
+ CMD
21
+
22
+ # create shared directories
23
+ run<<-CMD
24
+ mkdir -p #{shared_path}/uploads &&
25
+ mkdir -p #{shared_path}/cache
26
+ CMD
27
+
28
+ # set correct permissions
29
+ run "chmod -R 755 #{shared_path}/*"
30
+ end
31
+ end
32
+ end
@@ -1,5 +1,7 @@
1
1
  # Require our base library.
2
2
  require 'ash/base'
3
+ require 'railsless-deploy'
4
+
3
5
 
4
6
  configuration = Capistrano::Configuration.respond_to?(:instance) ?
5
7
  Capistrano::Configuration.instance(:must_exist) :
@@ -20,38 +22,45 @@ configuration.load do
20
22
  namespace :deploy do
21
23
  desc "Setup shared directories and permissions after initial setup"
22
24
  task :setup_shared, :roles => :web, :except => { :no_release => true } do
23
- run "mkdir -p #{shared_path}/var"
24
- run "mkdir -p #{shared_path}/var/logs"
25
- run "mkdir -p #{shared_path}/var/cache"
26
- run "mkdir -p #{shared_path}/var/sessions"
27
- run "mkdir -p #{shared_path}/system"
28
- sudo "chmod -R 777 #{shared_path}/*"
25
+ run<<-CMD
26
+ mkdir -p #{shared_path}/var &&
27
+ mkdir -p #{shared_path}/var/logs &&
28
+ mkdir -p #{shared_path}/var/cache &&
29
+ mkdir -p #{shared_path}/var/sessions &&
30
+ mkdir -p #{shared_path}/system
31
+ CMD
32
+ try_sudo "chmod -R 777 #{shared_path}/*"
29
33
  end
30
34
 
31
35
  desc "[internal] Touches up the released code. This is called by update_code after the basic deploy finishes."
32
36
  task :finalize_update, :roles => :web, :except => { :no_release => true } do
33
- # remove shared directories
34
- run "rm -Rf #{latest_release}/var"
35
- run "rm -Rf #{latest_release}/public/system"
37
+ # remove shared directories
38
+ run "rm -Rf #{latest_release}/var"
39
+ run "rm -Rf #{latest_release}/public/system"
36
40
  end
37
41
  end
38
42
 
39
43
  namespace :zend do
40
44
  desc "Symlink shared directories"
41
45
  task :symlink, :except => { :no_release => true } do
42
- run "ln -nfs #{shared_path}/var #{current_release}/var"
43
- run "ln -nfs #{shared_path}/system #{current_release}/public/system"
44
- run "mv #{current_release}/application/configs/application.ini.dist #{current_release}/application/configs/application.ini"
45
- run "ln -nfs #{current_release}/application/Application.#{stage}.php #{current_release}/application/Application.php"
46
- run "mv #{current_release}/public/htaccess.#{stage} #{current_release}/public/.htaccess"
47
- run "cp #{current_release}/scripts/doctrine-cli.#{stage} #{current_release}/scripts/doctrine-cli"
48
- sudo "chmod +x #{current_release}/scripts/doctrine-cli"
49
-
50
- # remove the example or other environment example files
51
- run "rm -f #{current_release}/scripts/doctrine-cli.dist"
52
- run "rm -f #{current_release}/scripts/doctrine-cli.staging"
53
- run "rm -f #{current_release}/scripts/doctrine-cli.production"
54
- run "rm -f #{current_release}/application/Application.example.php"
46
+ run<<-CMD
47
+ ln -nfs #{shared_path}/var #{current_release}/var &&
48
+ ln -nfs #{shared_path}/system #{current_release}/public/system &&
49
+ mv #{current_release}/application/configs/application.ini.dist #{current_release}/application/configs/application.ini &&
50
+ ln -nfs #{current_release}/application/Application.#{stage}.php #{current_release}/application/Application.php &&
51
+ mv #{current_release}/public/htaccess.#{stage} #{current_release}/public/.htaccess &&
52
+ cp #{current_release}/scripts/doctrine-cli.#{stage} #{current_release}/scripts/doctrine-cli
53
+ CMD
54
+
55
+ try_sudo "chmod +x #{current_release}/scripts/doctrine-cli"
56
+
57
+ # remove the example or other environment example files
58
+ run<<-CMD
59
+ rm -f #{current_release}/scripts/doctrine-cli.dist &&
60
+ rm -f #{current_release}/scripts/doctrine-cli.staging &&
61
+ rm -f #{current_release}/scripts/doctrine-cli.production &&
62
+ rm -f #{current_release}/application/Application.example.php
63
+ CMD
55
64
  end
56
65
  end
57
66
 
@@ -0,0 +1,28 @@
1
+ # Require our base drupal library
2
+ require 'ash/zend_doctrine'
3
+
4
+ configuration = Capistrano::Configuration.respond_to?(:instance) ?
5
+ Capistrano::Configuration.instance(:must_exist) :
6
+ Capistrano.configuration(:must_exist)
7
+
8
+ configuration.load do
9
+ # --------------------------------------------
10
+ # Overloaded Methods
11
+ # --------------------------------------------
12
+ namespace :deploy do
13
+ desc<<-DESC
14
+ Setup shared directories and permissions after initial setup \
15
+ for a shared hosting enviroment
16
+ DESC
17
+ task :setup_shared, :roles => :web, :except => { :no_release => true } do
18
+ run<<-CMD
19
+ mkdir -p #{shared_path}/var &&
20
+ mkdir -p #{shared_path}/var/logs &&
21
+ mkdir -p #{shared_path}/var/cache &&
22
+ mkdir -p #{shared_path}/var/sessions &&
23
+ mkdir -p #{shared_path}/system
24
+ CMD
25
+ try_sudo "chmod -R 755 #{shared_path}/*"
26
+ end
27
+ end
28
+ end
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: capistrano-ash
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 1.0.0
5
+ version: 1.1.0
6
6
  platform: ruby
7
7
  authors:
8
8
  - August Ash
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-05-17 00:00:00 -05:00
13
+ date: 2011-05-19 00:00:00 -05:00
14
14
  default_executable:
15
15
  dependencies: []
16
16
 
@@ -31,10 +31,13 @@ files:
31
31
  - lib/ash/base.rb
32
32
  - lib/ash/common.rb
33
33
  - lib/ash/drupal.rb
34
+ - lib/ash/drupal_shared_hosting.rb
34
35
  - lib/ash/hosted_magento.rb
35
36
  - lib/ash/magento.rb
36
37
  - lib/ash/wordpress.rb
38
+ - lib/ash/wordpress_shared_hosting.rb
37
39
  - lib/ash/zend_doctrine.rb
40
+ - lib/ash/zend_doctrine_shared_hosting.rb
38
41
  has_rdoc: true
39
42
  homepage: https://github.com/augustash/capistrano-ash
40
43
  licenses: []