capistrano-ash 0.0.3

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 ADDED
@@ -0,0 +1,5 @@
1
+ The capistrano/ash/drupal library takes a hash of Drupal multisites in the following format.
2
+
3
+ @set :multisites, {"default" => "mysite.com", "another" => "another.mysite.com"}@
4
+
5
+ where each key is a folder in your @sites@ directory and each value is the URL of the multisite. If you are not using multisites, just exclude the @:multisites@ variable definition.
data/Rakefile ADDED
@@ -0,0 +1,13 @@
1
+ begin
2
+ require 'jeweler'
3
+ Jeweler::Tasks.new do |gemspec|
4
+ gemspec.name = "capistrano-ash"
5
+ gemspec.summary = "August Ash recipes for Capistrano"
6
+ gemspec.description = "August Ash recipes for Capistrano"
7
+ gemspec.email = "jake@augustash.com"
8
+ gemspec.homepage = "https://github.com/augustash/capistrano-ash"
9
+ gemspec.authors = ["August Ash"]
10
+ end
11
+ rescue LoadError
12
+ puts "Jeweler not available. Install it with: gem install jeweler"
13
+ end
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.0.3
@@ -0,0 +1,42 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = %q{capistrano-ash}
8
+ s.version = "0.0.3"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["August Ash"]
12
+ s.date = %q{2010-12-06}
13
+ s.description = %q{August Ash recipes for Capistrano}
14
+ s.email = %q{jake@augustash.com}
15
+ s.extra_rdoc_files = [
16
+ "README.textile"
17
+ ]
18
+ s.files = [
19
+ "README.textile",
20
+ "Rakefile",
21
+ "VERSION",
22
+ "capistrano-ash.gemspec",
23
+ "lib/ash/base.rb",
24
+ "lib/ash/common.rb",
25
+ "lib/ash/drupal.rb"
26
+ ]
27
+ s.homepage = %q{https://github.com/augustash/capistrano-ash}
28
+ s.require_paths = ["lib"]
29
+ s.rubygems_version = %q{1.3.7}
30
+ s.summary = %q{August Ash recipes for Capistrano}
31
+
32
+ if s.respond_to? :specification_version then
33
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
34
+ s.specification_version = 3
35
+
36
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
37
+ else
38
+ end
39
+ else
40
+ end
41
+ end
42
+
data/lib/ash/base.rb ADDED
@@ -0,0 +1,48 @@
1
+ # Required gems/libraries
2
+ require 'rubygems'
3
+ require 'railsless-deploy'
4
+ require 'capistrano/ext/multistage'
5
+ require 'ash/common'
6
+
7
+ configuration = Capistrano::Configuration.respond_to?(:instance) ?
8
+ Capistrano::Configuration.instance(:must_exist) :
9
+ Capistrano.configuration(:must_exist)
10
+
11
+ configuration.load do
12
+
13
+ # --------------------------------------------
14
+ # Setting defaults
15
+ # --------------------------------------------
16
+ set :copy_exclude, [".svn", ".DS_Store", "*.sample", "LICENSE*", "Capfile", "config"]
17
+ set :deploy_via, :remote_cache
18
+ set :group_writable, false
19
+ set :use_sudo, false
20
+ set :scm, :subversion
21
+ set :scm_verbose, true
22
+
23
+ # show password requests on windows (http://weblog.jamisbuck.org/2007/10/14/capistrano-2-1)
24
+ default_run_options[:pty] = true
25
+
26
+ # --------------------------------------------
27
+ # Ash methods
28
+ # --------------------------------------------
29
+ namespace :ash do
30
+ desc "Fix the permissions on Ash servers"
31
+ task :fixperms, :except => { :no_release => true } do
32
+ # chmod the files and directories.
33
+ run "find #{latest_release} -type d -exec chmod 755 {} \\;"
34
+ run "find #{latest_release} -type f -exec chmod 644 {} \\;"
35
+ end
36
+
37
+ desc "Task for to test that Capistrano is working"
38
+ task :uname do
39
+ run "uname -a"
40
+ end
41
+
42
+ desc "Print environment of Capistrano user"
43
+ task :getpath do
44
+ run "echo $PATH"
45
+ end
46
+ end
47
+
48
+ end
data/lib/ash/common.rb ADDED
@@ -0,0 +1,10 @@
1
+ # Accepts a parameter name and value and registers it as a default within Capistrano.
2
+ # Params:
3
+ # +name+
4
+ # +args+
5
+ # +block+
6
+ def _cset(name, *args, &block)
7
+ unless exists?(name)
8
+ set(name, *args, &block)
9
+ end
10
+ end
data/lib/ash/drupal.rb ADDED
@@ -0,0 +1,97 @@
1
+ # Require our base library.
2
+ require 'ash/base'
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
+ # --------------------------------------------
11
+ # Setting defaults
12
+ # --------------------------------------------
13
+ _cset :multisites, {"default" => "default"}
14
+
15
+ # --------------------------------------------
16
+ # Calling our Methods
17
+ # --------------------------------------------
18
+ after "deploy:setup", "deploy:setup_shared"
19
+ after "deploy:symlink", "drupal:symlink"
20
+ after "deploy", "drupal:clearcache"
21
+ after "deploy", "deploy:cleanup"
22
+
23
+ # --------------------------------------------
24
+ # Overloaded Methods
25
+ # --------------------------------------------
26
+ namespace :deploy do
27
+ desc "Setup shared application directories and permissions after initial setup"
28
+ task :setup_shared, :roles => :web do
29
+ # remove Capistrano specific directories
30
+ run "rm -Rf #{shared_path}/log"
31
+ run "rm -Rf #{shared_path}/pids"
32
+ run "rm -Rf #{shared_path}/system"
33
+
34
+ # create shared directories
35
+ multisites.each_pair do |folder, url|
36
+ run "mkdir -p #{shared_path}/#{url}/files"
37
+ end
38
+
39
+ # set correct permissions
40
+ run "chmod -R 777 #{shared_path}/*"
41
+ end
42
+
43
+ desc "[internal] Touches up the released code. This is called by update_code after the basic deploy finishes."
44
+ task :finalize_update, :except => { :no_release => true } do
45
+ # remove shared directories
46
+ multisites.each_pair do |folder, url|
47
+ run "mv #{latest_release}/sites/#{folder} #{latest_release}/sites/#{url}"
48
+ run "rm -Rf #{latest_release}/sites/#{url}/files"
49
+ end
50
+ end
51
+
52
+ namespace :web do
53
+ desc "Disable the application and show a message screen"
54
+ task :disable do
55
+ multisites.each_pair do |folder, url|
56
+ run "/usr/local/bin/drush -l #{url} -r #{latest_release} vset --yes site_offline 1"
57
+ end
58
+ end
59
+
60
+ desc "Enable the application and remove the message screen"
61
+ task :enable do
62
+ multisites.each_pair do |folder, url|
63
+ run "/usr/local/bin/drush -l #{url} -r #{latest_release} vdel --yes site_offline"
64
+ end
65
+ end
66
+ end
67
+ end
68
+
69
+ # --------------------------------------------
70
+ # Drupal-specific methods
71
+ # --------------------------------------------
72
+ namespace :drupal do
73
+ desc "Symlink shared directories"
74
+ task :symlink, :except => { :no_release => true } do
75
+ multisites.each_pair do |folder, url|
76
+ run "ln -nfs #{shared_path}/#{url}/files #{current_release}/sites/#{url}/files"
77
+ run "ln -nfs #{latest_release}/sites/#{url}/settings.php.#{stage} #{latest_release}/sites/#{url}/settings.php"
78
+ run "/usr/local/bin/drush -l #{url} -r #{current_path} vset --yes file_directory_path sites/#{url}/files"
79
+ end
80
+ end
81
+
82
+ desc "Replace local database paths with remote paths"
83
+ task :updatedb, :except => { :no_release => true } do
84
+ multisites.each_pair do |folder, url|
85
+ run "/usr/local/bin/drush -l #{url} -r #{current_path} sqlq \"UPDATE {files} SET filepath = REPLACE(filepath,'sites/#{folder}/files','sites/#{url}/files');\""
86
+ end
87
+ end
88
+
89
+ desc "Clear all Drupal cache"
90
+ task :clearcache, :except => { :no_release => true } do
91
+ multisites.each_pair do |folder, url|
92
+ run "/usr/local/bin/drush -l #{url} -r #{current_path} cache-clear all"
93
+ end
94
+ end
95
+ end
96
+
97
+ end
metadata ADDED
@@ -0,0 +1,70 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: capistrano-ash
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 0
8
+ - 3
9
+ version: 0.0.3
10
+ platform: ruby
11
+ authors:
12
+ - August Ash
13
+ autorequire:
14
+ bindir: bin
15
+ cert_chain: []
16
+
17
+ date: 2010-12-06 00:00:00 -06:00
18
+ default_executable:
19
+ dependencies: []
20
+
21
+ description: August Ash recipes for Capistrano
22
+ email: jake@augustash.com
23
+ executables: []
24
+
25
+ extensions: []
26
+
27
+ extra_rdoc_files:
28
+ - README.textile
29
+ files:
30
+ - README.textile
31
+ - Rakefile
32
+ - VERSION
33
+ - capistrano-ash.gemspec
34
+ - lib/ash/base.rb
35
+ - lib/ash/common.rb
36
+ - lib/ash/drupal.rb
37
+ has_rdoc: true
38
+ homepage: https://github.com/augustash/capistrano-ash
39
+ licenses: []
40
+
41
+ post_install_message:
42
+ rdoc_options: []
43
+
44
+ require_paths:
45
+ - lib
46
+ required_ruby_version: !ruby/object:Gem::Requirement
47
+ none: false
48
+ requirements:
49
+ - - ">="
50
+ - !ruby/object:Gem::Version
51
+ segments:
52
+ - 0
53
+ version: "0"
54
+ required_rubygems_version: !ruby/object:Gem::Requirement
55
+ none: false
56
+ requirements:
57
+ - - ">="
58
+ - !ruby/object:Gem::Version
59
+ segments:
60
+ - 0
61
+ version: "0"
62
+ requirements: []
63
+
64
+ rubyforge_project:
65
+ rubygems_version: 1.3.7
66
+ signing_key:
67
+ specification_version: 3
68
+ summary: August Ash recipes for Capistrano
69
+ test_files: []
70
+