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 +5 -0
- data/Rakefile +13 -0
- data/VERSION +1 -0
- data/capistrano-ash.gemspec +42 -0
- data/lib/ash/base.rb +48 -0
- data/lib/ash/common.rb +10 -0
- data/lib/ash/drupal.rb +97 -0
- metadata +70 -0
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
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
|
+
|