dark-capistrano-recipes 0.7.2 → 0.8.1
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/.rvmrc +2 -0
- data/Gemfile +18 -0
- data/LICENSE +1 -1
- data/README.rdoc +6 -1
- data/Rakefile +44 -19
- data/VERSION +2 -0
- data/dark-capistrano-recipes.gemspec +54 -36
- data/doc/nginx/nginx.init +88 -0
- data/generators/nginx.conf.erb +29 -49
- data/lib/recipes/bluepill.rb +12 -12
- data/lib/recipes/bundler.rb +2 -2
- data/lib/recipes/db.rb +5 -5
- data/lib/recipes/deploy.rb +12 -12
- data/lib/recipes/god.rb +12 -12
- data/lib/recipes/log.rb +2 -2
- data/lib/recipes/nginx.rb +28 -13
- data/lib/recipes/passenger.rb +3 -3
- data/lib/recipes/resque.rb +8 -8
- data/lib/recipes/sphinx.rb +6 -6
- data/lib/recipes/symlinks.rb +1 -1
- data/lib/recipes/unicorn.rb +4 -4
- metadata +96 -19
- data/.gitignore +0 -7
- data/VERSION.yml +0 -4
data/.rvmrc
ADDED
data/Gemfile
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
source "http://rubygems.org"
|
2
|
+
# Add dependencies required to use your gem here.
|
3
|
+
# Example:
|
4
|
+
# gem "activesupport", ">= 2.3.5"
|
5
|
+
|
6
|
+
gem "capistrano", ">= 2.5.9"
|
7
|
+
gem "capistrano-ext", ">= 1.2.1"
|
8
|
+
|
9
|
+
# Add dependencies to develop your gem here.
|
10
|
+
# Include everything needed to run rake, tests, features, etc.
|
11
|
+
group :development do
|
12
|
+
gem "shoulda", ">= 0"
|
13
|
+
gem "bundler", "~> 1.0.0"
|
14
|
+
gem "jeweler", "~> 1.6.4"
|
15
|
+
gem "rdoc", ">=2.4"
|
16
|
+
gem "rcov", ">= 0"
|
17
|
+
end
|
18
|
+
|
data/LICENSE
CHANGED
data/README.rdoc
CHANGED
@@ -111,7 +111,12 @@ If you're running Phusion Passenger (http://www.modrails.com) be sure you add th
|
|
111
111
|
If you're running Unicorn (http://unicorn.bogomips.org/) be sure to add this line instead:
|
112
112
|
|
113
113
|
set :server, :unicorn
|
114
|
+
|
115
|
+
==Contributors (thank you!)
|
116
|
+
|
117
|
+
* Rogério Augusto
|
118
|
+
* Leonardob Bighetti
|
114
119
|
|
115
120
|
==Copyright
|
116
121
|
|
117
|
-
Copyright (c) 2009 Webficient LLC, Phil Misiowiec. See LICENSE for details.
|
122
|
+
Copyright (c) 2009-2011 Webficient LLC, Phil Misiowiec. See LICENSE for details.
|
data/Rakefile
CHANGED
@@ -1,29 +1,54 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
1
3
|
require 'rubygems'
|
4
|
+
require 'bundler'
|
5
|
+
begin
|
6
|
+
Bundler.setup(:default, :development)
|
7
|
+
rescue Bundler::BundlerError => e
|
8
|
+
$stderr.puts e.message
|
9
|
+
$stderr.puts "Run `bundle install` to install missing gems"
|
10
|
+
exit e.status_code
|
11
|
+
end
|
2
12
|
require 'rake'
|
3
13
|
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
end
|
17
|
-
Jeweler::GemcutterTasks.new
|
18
|
-
rescue LoadError
|
19
|
-
puts "Jeweler not available. Install it with: sudo gem install technicalpickles-jeweler -s http://gems.github.com"
|
14
|
+
require 'jeweler'
|
15
|
+
Jeweler::Tasks.new do |gem|
|
16
|
+
# gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
|
17
|
+
gem.name = "dark-capistrano-recipes"
|
18
|
+
gem.homepage = "http://github.com/darkside/capistrano-recipes"
|
19
|
+
gem.license = "MIT"
|
20
|
+
gem.summary =%q{Capistrano recipes}
|
21
|
+
gem.description = %q{Extend the Capistrano gem with these useful recipes}
|
22
|
+
gem.email = "leonardobighetti@gmail.com"
|
23
|
+
gem.authors = ["Phil Misiowiec", "Leonardo Bighetti"]
|
24
|
+
# dependencies defined in Gemfile
|
25
|
+
|
20
26
|
end
|
27
|
+
Jeweler::RubygemsDotOrgTasks.new
|
21
28
|
|
22
|
-
require 'rake/
|
29
|
+
require 'rake/testtask'
|
30
|
+
Rake::TestTask.new(:test) do |test|
|
31
|
+
test.libs << 'lib' << 'test'
|
32
|
+
test.pattern = 'test/**/test_*.rb'
|
33
|
+
test.verbose = true
|
34
|
+
end
|
35
|
+
|
36
|
+
require 'rcov/rcovtask'
|
37
|
+
Rcov::RcovTask.new do |test|
|
38
|
+
test.libs << 'test'
|
39
|
+
test.pattern = 'test/**/test_*.rb'
|
40
|
+
test.verbose = true
|
41
|
+
test.rcov_opts << '--exclude "gems/*"'
|
42
|
+
end
|
43
|
+
|
44
|
+
task :default => :test
|
45
|
+
|
46
|
+
require 'rdoc/task'
|
23
47
|
Rake::RDocTask.new do |rdoc|
|
48
|
+
version = File.exist?('VERSION') ? File.read('VERSION') : ""
|
49
|
+
|
24
50
|
rdoc.rdoc_dir = 'rdoc'
|
25
|
-
rdoc.title =
|
26
|
-
rdoc.options << '--line-numbers' << '--inline-source'
|
51
|
+
rdoc.title = "dark-capistrano-recipes #{version}"
|
27
52
|
rdoc.rdoc_files.include('README*')
|
28
53
|
rdoc.rdoc_files.include('lib/**/*.rb')
|
29
54
|
end
|
data/VERSION
ADDED
@@ -1,56 +1,58 @@
|
|
1
1
|
# Generated by jeweler
|
2
|
-
# DO NOT EDIT THIS FILE
|
3
|
-
# Instead, edit Jeweler::Tasks in Rakefile, and run
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{dark-capistrano-recipes}
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.8.1"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Phil Misiowiec", "Leonardo Bighetti"]
|
12
|
-
s.date = %q{2011-
|
12
|
+
s.date = %q{2011-07-12}
|
13
13
|
s.description = %q{Extend the Capistrano gem with these useful recipes}
|
14
14
|
s.email = %q{leonardobighetti@gmail.com}
|
15
15
|
s.extra_rdoc_files = [
|
16
16
|
"LICENSE",
|
17
|
-
|
17
|
+
"README.rdoc"
|
18
18
|
]
|
19
19
|
s.files = [
|
20
|
-
".
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
20
|
+
".rvmrc",
|
21
|
+
"Gemfile",
|
22
|
+
"LICENSE",
|
23
|
+
"README.rdoc",
|
24
|
+
"Rakefile",
|
25
|
+
"VERSION",
|
26
|
+
"dark-capistrano-recipes.gemspec",
|
27
|
+
"doc/god/god",
|
28
|
+
"doc/god/god.conf",
|
29
|
+
"doc/god/god.init",
|
30
|
+
"doc/nginx/nginx.init",
|
31
|
+
"generators/app.god.erb",
|
32
|
+
"generators/nginx.conf.erb",
|
33
|
+
"generators/unicorn.rb.erb",
|
34
|
+
"lib/capistrano_recipes.rb",
|
35
|
+
"lib/helpers.rb",
|
36
|
+
"lib/recipes/application.rb",
|
37
|
+
"lib/recipes/bluepill.rb",
|
38
|
+
"lib/recipes/bundler.rb",
|
39
|
+
"lib/recipes/db.rb",
|
40
|
+
"lib/recipes/deploy.rb",
|
41
|
+
"lib/recipes/god.rb",
|
42
|
+
"lib/recipes/hooks.rb",
|
43
|
+
"lib/recipes/log.rb",
|
44
|
+
"lib/recipes/nginx.rb",
|
45
|
+
"lib/recipes/passenger.rb",
|
46
|
+
"lib/recipes/resque.rb",
|
47
|
+
"lib/recipes/sphinx.rb",
|
48
|
+
"lib/recipes/symlinks.rb",
|
49
|
+
"lib/recipes/unicorn.rb"
|
48
50
|
]
|
49
51
|
s.homepage = %q{http://github.com/darkside/capistrano-recipes}
|
50
|
-
s.
|
52
|
+
s.licenses = ["MIT"]
|
51
53
|
s.require_paths = ["lib"]
|
52
|
-
s.rubygems_version = %q{1.
|
53
|
-
s.summary = %q{
|
54
|
+
s.rubygems_version = %q{1.6.2}
|
55
|
+
s.summary = %q{Capistrano recipes}
|
54
56
|
|
55
57
|
if s.respond_to? :specification_version then
|
56
58
|
s.specification_version = 3
|
@@ -58,12 +60,28 @@ Gem::Specification.new do |s|
|
|
58
60
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
59
61
|
s.add_runtime_dependency(%q<capistrano>, [">= 2.5.9"])
|
60
62
|
s.add_runtime_dependency(%q<capistrano-ext>, [">= 1.2.1"])
|
63
|
+
s.add_development_dependency(%q<shoulda>, [">= 0"])
|
64
|
+
s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
|
65
|
+
s.add_development_dependency(%q<jeweler>, ["~> 1.6.4"])
|
66
|
+
s.add_development_dependency(%q<rdoc>, [">= 2.4"])
|
67
|
+
s.add_development_dependency(%q<rcov>, [">= 0"])
|
61
68
|
else
|
62
69
|
s.add_dependency(%q<capistrano>, [">= 2.5.9"])
|
63
70
|
s.add_dependency(%q<capistrano-ext>, [">= 1.2.1"])
|
71
|
+
s.add_dependency(%q<shoulda>, [">= 0"])
|
72
|
+
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
73
|
+
s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
|
74
|
+
s.add_dependency(%q<rdoc>, [">= 2.4"])
|
75
|
+
s.add_dependency(%q<rcov>, [">= 0"])
|
64
76
|
end
|
65
77
|
else
|
66
78
|
s.add_dependency(%q<capistrano>, [">= 2.5.9"])
|
67
79
|
s.add_dependency(%q<capistrano-ext>, [">= 1.2.1"])
|
80
|
+
s.add_dependency(%q<shoulda>, [">= 0"])
|
81
|
+
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
82
|
+
s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
|
83
|
+
s.add_dependency(%q<rdoc>, [">= 2.4"])
|
84
|
+
s.add_dependency(%q<rcov>, [">= 0"])
|
68
85
|
end
|
69
86
|
end
|
87
|
+
|
@@ -0,0 +1,88 @@
|
|
1
|
+
#! /bin/sh
|
2
|
+
|
3
|
+
### BEGIN INIT INFO
|
4
|
+
# Provides: nginx
|
5
|
+
# Required-Start: $local_fs $remote_fs $network $syslog
|
6
|
+
# Required-Stop: $local_fs $remote_fs $network $syslog
|
7
|
+
# Default-Start: 2 3 4 5
|
8
|
+
# Default-Stop: 0 1 6
|
9
|
+
# Short-Description: starts the nginx web server
|
10
|
+
# Description: starts nginx using start-stop-daemon
|
11
|
+
### END INIT INFO
|
12
|
+
|
13
|
+
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/nginx/sbin
|
14
|
+
DAEMON=/usr/local/nginx/sbin/nginx
|
15
|
+
NAME=nginx
|
16
|
+
DESC=nginx
|
17
|
+
|
18
|
+
test -x $DAEMON || exit 0
|
19
|
+
|
20
|
+
# Include nginx defaults if available
|
21
|
+
if [ -f /etc/default/nginx ] ; then
|
22
|
+
. /etc/default/nginx
|
23
|
+
fi
|
24
|
+
|
25
|
+
set -e
|
26
|
+
|
27
|
+
. /lib/lsb/init-functions
|
28
|
+
|
29
|
+
test_nginx_config() {
|
30
|
+
if nginx -t $DAEMON_OPTS
|
31
|
+
then
|
32
|
+
return 0
|
33
|
+
else
|
34
|
+
return $?
|
35
|
+
fi
|
36
|
+
}
|
37
|
+
|
38
|
+
case "$1" in
|
39
|
+
start)
|
40
|
+
echo -n "Starting $DESC: "
|
41
|
+
test_nginx_config
|
42
|
+
start-stop-daemon --start --quiet --pidfile /var/run/$NAME.pid \
|
43
|
+
--exec $DAEMON -- $DAEMON_OPTS || true
|
44
|
+
echo "$NAME."
|
45
|
+
;;
|
46
|
+
stop)
|
47
|
+
echo -n "Stopping $DESC: "
|
48
|
+
start-stop-daemon --stop --quiet --pidfile /var/run/$NAME.pid \
|
49
|
+
--exec $DAEMON || true
|
50
|
+
echo "$NAME."
|
51
|
+
;;
|
52
|
+
restart|force-reload)
|
53
|
+
echo -n "Restarting $DESC: "
|
54
|
+
start-stop-daemon --stop --quiet --pidfile \
|
55
|
+
/var/run/$NAME.pid --exec $DAEMON || true
|
56
|
+
sleep 1
|
57
|
+
test_nginx_config
|
58
|
+
start-stop-daemon --start --quiet --pidfile \
|
59
|
+
/var/run/$NAME.pid --exec $DAEMON -- $DAEMON_OPTS || true
|
60
|
+
echo "$NAME."
|
61
|
+
;;
|
62
|
+
reload)
|
63
|
+
echo -n "Reloading $DESC configuration: "
|
64
|
+
test_nginx_config
|
65
|
+
start-stop-daemon --stop --signal HUP --quiet --pidfile /var/run/$NAME.pid \
|
66
|
+
--exec $DAEMON || true
|
67
|
+
echo "$NAME."
|
68
|
+
;;
|
69
|
+
configtest)
|
70
|
+
echo -n "Testing $DESC configuration: "
|
71
|
+
if test_nginx_config
|
72
|
+
then
|
73
|
+
echo "$NAME."
|
74
|
+
else
|
75
|
+
exit $?
|
76
|
+
fi
|
77
|
+
;;
|
78
|
+
status)
|
79
|
+
status_of_proc -p /var/run/$NAME.pid "$DAEMON" nginx && exit 0 || exit $?
|
80
|
+
;;
|
81
|
+
*)
|
82
|
+
echo "Usage: $NAME {start|stop|restart|reload|force-reload|status|configtest}" >&2
|
83
|
+
exit 1
|
84
|
+
;;
|
85
|
+
esac
|
86
|
+
|
87
|
+
exit 0
|
88
|
+
|
data/generators/nginx.conf.erb
CHANGED
@@ -20,7 +20,7 @@
|
|
20
20
|
|
21
21
|
# path for static files
|
22
22
|
root <%= deploy_to %>/current/public;
|
23
|
-
access_log <%= deploy_to %>/current/log/nginx.access.log
|
23
|
+
access_log <%= deploy_to %>/current/log/nginx.access.log;
|
24
24
|
error_log <%= deploy_to %>/current/log/nginx.error.log info;
|
25
25
|
|
26
26
|
# this rewrites all the requests to the maintenance.html
|
@@ -30,24 +30,24 @@
|
|
30
30
|
rewrite ^(.*)$ /system/maintenance.html last;
|
31
31
|
break;
|
32
32
|
}
|
33
|
-
|
33
|
+
|
34
34
|
location / {
|
35
35
|
<% if is_using_passenger %>
|
36
36
|
rails_env <%= rails_env %>;
|
37
37
|
passenger_enabled on;
|
38
38
|
<% end %>
|
39
|
-
|
39
|
+
|
40
40
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
41
41
|
proxy_set_header Host $http_host;
|
42
|
-
|
42
|
+
|
43
43
|
# If the file exists as a static file serve it directly without
|
44
44
|
# running all the other rewite tests on it
|
45
|
-
if (-f $request_filename) {
|
46
|
-
break;
|
45
|
+
if (-f $request_filename) {
|
46
|
+
break;
|
47
47
|
}
|
48
48
|
|
49
49
|
# check for index.html for directory index
|
50
|
-
# if its there on the filesystem then rewite
|
50
|
+
# if its there on the filesystem then rewite
|
51
51
|
# the url to add /index.html to the end of it
|
52
52
|
# and then break to send it to the next config rules.
|
53
53
|
if (-f $request_filename/index.html) {
|
@@ -57,14 +57,14 @@
|
|
57
57
|
# this is the meat of the rails page caching config
|
58
58
|
# it adds .html to the end of the url and then checks
|
59
59
|
# the filesystem for that file. If it exists, then we
|
60
|
-
# rewite the url to have explicit .html on the end
|
60
|
+
# rewite the url to have explicit .html on the end
|
61
61
|
# and then send it on its way to the next config rule.
|
62
|
-
# if there is no file on the fs then it sets all the
|
62
|
+
# if there is no file on the fs then it sets all the
|
63
63
|
# necessary headers and proxies to our upstream mongrels
|
64
64
|
if (-f $request_filename.html) {
|
65
65
|
rewrite (.*) $1.html break;
|
66
66
|
}
|
67
|
-
|
67
|
+
|
68
68
|
<% if is_using_unicorn %>
|
69
69
|
if (!-f $request_filename) {
|
70
70
|
proxy_pass http://<%= application %>_app_server;
|
@@ -72,56 +72,35 @@
|
|
72
72
|
}
|
73
73
|
<% end %>
|
74
74
|
}
|
75
|
-
|
76
|
-
# Now this supposedly should work as it gets the filenames with querystrings that Rails provides.
|
77
|
-
# BUT there's a chance it could break the ajax calls.
|
78
|
-
location ~* \.(ico|css|gif|jpe?g|png)(\?[0-9]+)?$ {
|
79
|
-
expires max;
|
80
|
-
break;
|
81
|
-
}
|
82
|
-
|
83
|
-
location ~ ^/javascripts/.*\.js(\?[0-9]+)?$ {
|
84
|
-
expires max;
|
85
|
-
break;
|
86
|
-
}
|
87
|
-
|
75
|
+
|
88
76
|
# Now this supposedly should work as it gets the filenames with querystrings that Rails provides.
|
89
77
|
# BUT there's a chance it could break the ajax calls.
|
90
78
|
location ~* \.(ico|css|gif|jpe?g|png)(\?[0-9]+)?$ {
|
91
79
|
expires max;
|
92
80
|
break;
|
93
81
|
}
|
94
|
-
|
82
|
+
|
95
83
|
location ~ ^/javascripts/.*\.js(\?[0-9]+)?$ {
|
96
84
|
expires max;
|
97
85
|
break;
|
98
86
|
}
|
99
|
-
|
100
|
-
# if the request is for a static resource, nginx should serve it directly
|
101
|
-
# and add a far future expires header to it, making the browser
|
102
|
-
# cache the resource and navigate faster over the website
|
103
|
-
location ~ ^/(images|javascripts|stylesheets|system)/ {
|
104
|
-
root /home/deployer/shop/current/public;
|
105
|
-
expires max;
|
106
|
-
break;
|
107
|
-
}
|
108
|
-
|
87
|
+
|
109
88
|
# Rails error pages
|
110
89
|
error_page 500 502 503 504 /500.html;
|
111
90
|
location = /500.html {
|
112
91
|
root <%= deploy_to %>/current/public;
|
113
92
|
}
|
114
93
|
}
|
115
|
-
|
94
|
+
|
116
95
|
<% if application_uses_ssl %>
|
117
|
-
|
96
|
+
|
118
97
|
<% if is_using_unicorn %>
|
119
98
|
upstream <%= application %>_app_ssl {
|
120
99
|
server unix:<%= unicorn_socket %> fail_timeout=0;
|
121
|
-
}
|
100
|
+
}
|
122
101
|
<% end %>
|
123
|
-
|
124
|
-
# This server is setup for ssl. Uncomment if
|
102
|
+
|
103
|
+
# This server is setup for ssl. Uncomment if
|
125
104
|
# you are using ssl as well as port 80.
|
126
105
|
server {
|
127
106
|
listen <%= application_port_ssl%>;
|
@@ -135,7 +114,7 @@
|
|
135
114
|
ssl_certificate_key /etc/ssl/private/server.key;
|
136
115
|
ssl_session_timeout 5m;
|
137
116
|
client_max_body_size 50M;
|
138
|
-
|
117
|
+
|
139
118
|
root <%= deploy_to %>/current/public;
|
140
119
|
access_log <%= deploy_to %>/current/log/nginx.access.log main;
|
141
120
|
error_log <%= deploy_to %>/current/log/nginx.error.log info;
|
@@ -153,7 +132,7 @@
|
|
153
132
|
rails_env <%= rails_env %>;
|
154
133
|
passenger_enabled on;
|
155
134
|
<% end %>
|
156
|
-
|
135
|
+
|
157
136
|
# needed to forward user's IP address to rails
|
158
137
|
proxy_set_header X-Real-IP $remote_addr;
|
159
138
|
|
@@ -165,15 +144,15 @@
|
|
165
144
|
proxy_redirect off;
|
166
145
|
proxy_max_temp_file_size 0;
|
167
146
|
|
168
|
-
|
147
|
+
|
169
148
|
# If the file exists as a static file serve it directly without
|
170
149
|
# running all the other rewite tests on it
|
171
|
-
if (-f $request_filename) {
|
172
|
-
break;
|
150
|
+
if (-f $request_filename) {
|
151
|
+
break;
|
173
152
|
}
|
174
153
|
|
175
154
|
# check for index.html for directory index
|
176
|
-
# if its there on the filesystem then rewite
|
155
|
+
# if its there on the filesystem then rewite
|
177
156
|
# the url to add /index.html to the end of it
|
178
157
|
# and then break to send it to the next config rules.
|
179
158
|
if (-f $request_filename/index.html) {
|
@@ -183,14 +162,14 @@
|
|
183
162
|
# this is the meat of the rails page caching config
|
184
163
|
# it adds .html to the end of the url and then checks
|
185
164
|
# the filesystem for that file. If it exists, then we
|
186
|
-
# rewite the url to have explicit .html on the end
|
165
|
+
# rewite the url to have explicit .html on the end
|
187
166
|
# and then send it on its way to the next config rule.
|
188
|
-
# if there is no file on the fs then it sets all the
|
167
|
+
# if there is no file on the fs then it sets all the
|
189
168
|
# necessary headers and proxies to our upstream mongrels
|
190
169
|
if (-f $request_filename.html) {
|
191
170
|
rewrite (.*) $1.html break;
|
192
171
|
}
|
193
|
-
|
172
|
+
|
194
173
|
<% if is_using_unicorn %>
|
195
174
|
if (!-f $request_filename) {
|
196
175
|
proxy_pass http://<%= application %>_app_ssl;
|
@@ -204,4 +183,5 @@
|
|
204
183
|
root <%= deploy_to %>/current/public;
|
205
184
|
}
|
206
185
|
}
|
207
|
-
<% end %>
|
186
|
+
<% end %>
|
187
|
+
|
data/lib/recipes/bluepill.rb
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
Capistrano::Configuration.instance.load do
|
2
2
|
namespace :bluepill do
|
3
|
-
desc "|
|
3
|
+
desc "|capistrano-recipes| Install the bluepill monitoring tool"
|
4
4
|
task :install, :roles => [:app] do
|
5
5
|
sudo "gem install bluepill"
|
6
6
|
end
|
7
7
|
|
8
|
-
desc "|
|
8
|
+
desc "|capistrano-recipes| Stop processes that bluepill is monitoring and quit bluepill"
|
9
9
|
task :quit, :roles => [:app] do
|
10
|
-
args = options
|
10
|
+
args = exists?(:options) ? options : ''
|
11
11
|
begin
|
12
12
|
sudo "bluepill stop #{args}"
|
13
13
|
rescue
|
@@ -17,32 +17,32 @@ Capistrano::Configuration.instance.load do
|
|
17
17
|
end
|
18
18
|
end
|
19
19
|
|
20
|
-
desc "|
|
20
|
+
desc "|capistrano-recipes| Load the pill from {your-app}/config/pills/{app-name}.pill"
|
21
21
|
task :init, :roles =>[:app] do
|
22
22
|
sudo "bluepill load #{current_path}/config/pills/#{application}.pill"
|
23
23
|
end
|
24
24
|
|
25
|
-
desc "|
|
25
|
+
desc "|capistrano-recipes| Starts your previous stopped pill"
|
26
26
|
task :start, :roles =>[:app] do
|
27
|
-
args = options
|
27
|
+
args = exists?(:options) ? options : ''
|
28
28
|
sudo "bluepill start #{args}"
|
29
29
|
end
|
30
30
|
|
31
|
-
desc "|
|
31
|
+
desc "|capistrano-recipes| Stops some bluepill monitored process"
|
32
32
|
task :stop, :roles =>[:app] do
|
33
|
-
args = options
|
33
|
+
args = exists?(:options) ? options : ''
|
34
34
|
sudo "bluepill stop #{args}"
|
35
35
|
end
|
36
36
|
|
37
|
-
desc "|
|
37
|
+
desc "|capistrano-recipes| Restarts the pill from {your-app}/config/pills/{app-name}.pill"
|
38
38
|
task :restart, :roles =>[:app] do
|
39
|
-
args = options
|
39
|
+
args = exists?(:options) ? options : ''
|
40
40
|
sudo "bluepill restart #{args}"
|
41
41
|
end
|
42
42
|
|
43
|
-
desc "|
|
43
|
+
desc "|capistrano-recipes| Prints bluepills monitored processes statuses"
|
44
44
|
task :status, :roles => [:app] do
|
45
|
-
args = options
|
45
|
+
args = exists?(:options) ? options : ''
|
46
46
|
sudo "bluepill status #{args}"
|
47
47
|
end
|
48
48
|
end
|
data/lib/recipes/bundler.rb
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
Capistrano::Configuration.instance.load do
|
2
2
|
namespace :bundler do
|
3
|
-
desc "|
|
3
|
+
desc "|capistrano-recipes| Installs bundler gem to your server"
|
4
4
|
task :setup, :roles => :app do
|
5
5
|
run "if ! gem list | grep --silent -e 'bundler'; then #{try_sudo} gem uninstall bundler; #{try_sudo} gem install --no-rdoc --no-ri bundler; fi"
|
6
6
|
end
|
7
7
|
|
8
|
-
desc "|
|
8
|
+
desc "|capistrano-recipes| Runs bundle install on the app server (internal task)"
|
9
9
|
task :install, :roles => :app, :except => { :no_release => true } do
|
10
10
|
run "cd #{current_path} && bundle install --deployment --without=development test"
|
11
11
|
end
|
data/lib/recipes/db.rb
CHANGED
@@ -4,7 +4,7 @@ Capistrano::Configuration.instance.load do
|
|
4
4
|
namespace :db do
|
5
5
|
namespace :mysql do
|
6
6
|
desc <<-EOF
|
7
|
-
|
|
7
|
+
|capistrano-recipes| Performs a compressed database dump. \
|
8
8
|
WARNING: This locks your tables for the duration of the mysqldump.
|
9
9
|
Don't run it madly!
|
10
10
|
EOF
|
@@ -16,7 +16,7 @@ Capistrano::Configuration.instance.load do
|
|
16
16
|
end
|
17
17
|
end
|
18
18
|
|
19
|
-
desc "|
|
19
|
+
desc "|capistrano-recipes| Restores the database from the latest compressed dump"
|
20
20
|
task :restore, :roles => :db, :only => { :primary => true } do
|
21
21
|
prepare_from_yaml
|
22
22
|
run "bzcat #{db_remote_file} | mysql --user=#{db_user} -p --host=#{db_host} #{db_name}" do |ch, stream, out|
|
@@ -25,13 +25,13 @@ Capistrano::Configuration.instance.load do
|
|
25
25
|
end
|
26
26
|
end
|
27
27
|
|
28
|
-
desc "|
|
28
|
+
desc "|capistrano-recipes| Downloads the compressed database dump to this machine"
|
29
29
|
task :fetch_dump, :roles => :db, :only => { :primary => true } do
|
30
30
|
prepare_from_yaml
|
31
31
|
download db_remote_file, db_local_file, :via => :scp
|
32
32
|
end
|
33
33
|
|
34
|
-
desc "|
|
34
|
+
desc "|capistrano-recipes| Create MySQL database and user for this environment using prompted values"
|
35
35
|
task :setup, :roles => :db, :only => { :primary => true } do
|
36
36
|
prepare_for_db_command
|
37
37
|
|
@@ -70,7 +70,7 @@ Capistrano::Configuration.instance.load do
|
|
70
70
|
end
|
71
71
|
end
|
72
72
|
|
73
|
-
desc "|
|
73
|
+
desc "|capistrano-recipes| Create database.yml in shared path with settings for current stage and test env"
|
74
74
|
task :create_yaml do
|
75
75
|
set(:db_user) { Capistrano::CLI.ui.ask "Enter #{environment} database username:" }
|
76
76
|
set(:db_pass) { Capistrano::CLI.password_prompt "Enter #{environment} database password:" }
|
data/lib/recipes/deploy.rb
CHANGED
@@ -2,18 +2,18 @@ Capistrano::Configuration.instance.load do
|
|
2
2
|
set :shared_children, %w(system log pids config)
|
3
3
|
|
4
4
|
namespace :deploy do
|
5
|
-
desc "|
|
5
|
+
desc "|capistrano-recipes| Deploy it, github-style."
|
6
6
|
task :default, :roles => :app, :except => { :no_release => true } do
|
7
7
|
update
|
8
8
|
restart
|
9
9
|
end
|
10
10
|
|
11
|
-
desc "|
|
11
|
+
desc "|capistrano-recipes| Destroys everything"
|
12
12
|
task :seppuku, :roles => :app, :except => { :no_release => true } do
|
13
13
|
run "rm -rf #{current_path}; rm -rf #{shared_path}"
|
14
14
|
end
|
15
15
|
|
16
|
-
desc "|
|
16
|
+
desc "|capistrano-recipes| Create shared dirs"
|
17
17
|
task :setup_dirs, :roles => :app, :except => { :no_release => true } do
|
18
18
|
commands = shared_dirs.map do |path|
|
19
19
|
"mkdir -p #{shared_path}/#{path}"
|
@@ -21,41 +21,41 @@ Capistrano::Configuration.instance.load do
|
|
21
21
|
run commands.join(" && ")
|
22
22
|
end
|
23
23
|
|
24
|
-
desc "|
|
24
|
+
desc "|capistrano-recipes| Uploads your local config.yml to the server"
|
25
25
|
task :configure, :roles => :app, :except => { :no_release => true } do
|
26
26
|
generate_config('config/config.yml', "#{shared_path}/config/config.yml")
|
27
27
|
end
|
28
28
|
|
29
|
-
desc "|
|
29
|
+
desc "|capistrano-recipes| Setup a GitHub-style deployment."
|
30
30
|
task :setup, :roles => :app, :except => { :no_release => true } do
|
31
31
|
run "rm -rf #{current_path}"
|
32
32
|
setup_dirs
|
33
33
|
run "git clone #{repository} #{current_path}"
|
34
34
|
end
|
35
35
|
|
36
|
-
desc "|
|
36
|
+
desc "|capistrano-recipes| Update the deployed code."
|
37
37
|
task :update_code, :roles => :app, :except => { :no_release => true } do
|
38
38
|
run "cd #{current_path}; git fetch origin; git reset --hard #{branch}"
|
39
39
|
end
|
40
40
|
|
41
|
-
desc "|
|
41
|
+
desc "|capistrano-recipes| Alias for symlinks:make"
|
42
42
|
task :symlink, :roles => :app, :except => { :no_release => true } do
|
43
43
|
symlinks.make
|
44
44
|
end
|
45
45
|
|
46
|
-
desc "|
|
46
|
+
desc "|capistrano-recipes| Remote run for rake db:migrate"
|
47
47
|
task :migrate, :roles => :app, :except => { :no_release => true } do
|
48
48
|
run "cd #{current_path}; bundle exec rake RAILS_ENV=#{rails_env} db:migrate"
|
49
49
|
end
|
50
50
|
|
51
|
-
desc "|
|
51
|
+
desc "|capistrano-recipes| [Obsolete] Nothing to cleanup when using reset --hard on git"
|
52
52
|
task :cleanup, :roles => :app, :except => { :no_release => true } do
|
53
53
|
#nothing to cleanup, we're not working with 'releases'
|
54
54
|
puts "Nothing to cleanup, yay!"
|
55
55
|
end
|
56
56
|
|
57
57
|
namespace :rollback do
|
58
|
-
desc "|
|
58
|
+
desc "|capistrano-recipes| Rollback , :except => { :no_release => true }a single commit."
|
59
59
|
task :default, :roles => :app, :except => { :no_release => true } do
|
60
60
|
set :branch, "HEAD^"
|
61
61
|
deploy.default
|
@@ -63,7 +63,7 @@ Capistrano::Configuration.instance.load do
|
|
63
63
|
end
|
64
64
|
|
65
65
|
desc <<-DESC
|
66
|
-
|
|
66
|
+
|capistrano-recipes| Restarts your application. This depends heavily on what server you're running.
|
67
67
|
If you are running Phusion Passenger, you can explicitly set the server type:
|
68
68
|
|
69
69
|
set :server, :passenger
|
@@ -83,7 +83,7 @@ Capistrano::Configuration.instance.load do
|
|
83
83
|
|
84
84
|
set :server, :unicorn
|
85
85
|
|
86
|
-
By default, this will be |
|
86
|
+
By default, this will be |capistrano-recipes| d via sudo as the `app' user. If \
|
87
87
|
you wish to run it as a different user, set the :runner variable to \
|
88
88
|
that user. If you are in an environment where you can't use sudo, set \
|
89
89
|
the :use_sudo variable to false:
|
data/lib/recipes/god.rb
CHANGED
@@ -8,7 +8,7 @@ Capistrano::Configuration.instance.load do
|
|
8
8
|
|
9
9
|
namespace :god do
|
10
10
|
|
11
|
-
desc "|
|
11
|
+
desc "|capistrano-recipes| Parses and uploads god configuration for this app"
|
12
12
|
task :setup, :roles => :app do
|
13
13
|
generate_config(god_local_config, god_remote_config)
|
14
14
|
end
|
@@ -49,7 +49,7 @@ Capistrano::Configuration.instance.load do
|
|
49
49
|
sudo "mv #{god_defo_temp} #{god_defo_remote}"
|
50
50
|
end
|
51
51
|
|
52
|
-
desc "|
|
52
|
+
desc "|capistrano-recipes| Bootstraps god on your server. Be careful with this."
|
53
53
|
task :bootstrap, :roles => :app do
|
54
54
|
setup_temp
|
55
55
|
setup_defo
|
@@ -59,7 +59,7 @@ Capistrano::Configuration.instance.load do
|
|
59
59
|
puts "God is bootstrapped. To remove use 'cap god:implode'"
|
60
60
|
end
|
61
61
|
|
62
|
-
desc "|
|
62
|
+
desc "|capistrano-recipes| (Seppuku) Completely remove god from the system init"
|
63
63
|
task :implode, :roles => :app do
|
64
64
|
# Removing any system startup links for /etc/init.d/god ...
|
65
65
|
sudo "update-rc.d -f god remove"
|
@@ -71,49 +71,49 @@ Capistrano::Configuration.instance.load do
|
|
71
71
|
puts "God is no more."
|
72
72
|
end
|
73
73
|
|
74
|
-
desc "|
|
74
|
+
desc "|capistrano-recipes| Use god to restart the app"
|
75
75
|
namespace :restart do
|
76
76
|
task :default, :roles => :app, :except => { :no_release => true } do
|
77
77
|
sudo "#{bin_god} restart #{application}"
|
78
78
|
end
|
79
79
|
|
80
|
-
desc "|
|
80
|
+
desc "|capistrano-recipes| Restarts the app server"
|
81
81
|
task :app, :roles => :app, :except => { :no_release => true } do
|
82
82
|
sudo "#{bin_god} restart #{application}-#{app_server.to_s.downcase}"
|
83
83
|
end
|
84
84
|
end
|
85
85
|
|
86
|
-
desc "|
|
86
|
+
desc "|capistrano-recipes| Fetches the log for the whole group"
|
87
87
|
task :log, :roles => :app do
|
88
88
|
sudo "#{bin_god} log #{application}"
|
89
89
|
end
|
90
90
|
|
91
|
-
desc "|
|
91
|
+
desc "|capistrano-recipes| Reload config"
|
92
92
|
task :reload, :roles => :app do
|
93
93
|
sudo "#{bin_god} load #{god_remote_config}"
|
94
94
|
end
|
95
95
|
|
96
|
-
desc "|
|
96
|
+
desc "|capistrano-recipes| Start god service"
|
97
97
|
task :start, :roles => :app do
|
98
98
|
sudo "service god start"
|
99
99
|
end
|
100
100
|
|
101
|
-
desc "|
|
101
|
+
desc "|capistrano-recipes| Stops god service"
|
102
102
|
task :stop, :roles => :app do
|
103
103
|
sudo "service god stop"
|
104
104
|
end
|
105
105
|
|
106
|
-
desc "|
|
106
|
+
desc "|capistrano-recipes| Quit god, but not the processes it's monitoring"
|
107
107
|
task :quit, :roles => :app do
|
108
108
|
sudo "#{bin_god} quit"
|
109
109
|
end
|
110
110
|
|
111
|
-
desc "|
|
111
|
+
desc "|capistrano-recipes| Terminate god and all monitored processes"
|
112
112
|
task :terminate, :roles => :app do
|
113
113
|
sudo "#{bin_god} terminate"
|
114
114
|
end
|
115
115
|
|
116
|
-
desc "|
|
116
|
+
desc "|capistrano-recipes| Describe the status of the running tasks"
|
117
117
|
task :status, :roles => :app do
|
118
118
|
sudo "#{bin_god} status"
|
119
119
|
end
|
data/lib/recipes/log.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Capistrano::Configuration.instance.load do
|
2
2
|
namespace :log do
|
3
|
-
desc "|
|
3
|
+
desc "|capistrano-recipes| Tail all application log files"
|
4
4
|
task :tail, :roles => :app do
|
5
5
|
run "tail -f #{shared_path}/log/*.log" do |channel, stream, data|
|
6
6
|
puts "#{channel[:host]}: #{data}"
|
@@ -9,7 +9,7 @@ Capistrano::Configuration.instance.load do
|
|
9
9
|
end
|
10
10
|
|
11
11
|
desc <<-DESC
|
12
|
-
|
|
12
|
+
|capistrano-recipes| Install log rotation script; optional args: days=7, size=5M, group (defaults to same value as :user)
|
13
13
|
DESC
|
14
14
|
task :rotate, :roles => :app do
|
15
15
|
rotate_script = %Q{#{shared_path}/log/#{environment}.log {
|
data/lib/recipes/nginx.rb
CHANGED
@@ -1,11 +1,16 @@
|
|
1
1
|
Capistrano::Configuration.instance.load do
|
2
|
-
|
2
|
+
|
3
3
|
# Where your nginx lives. Usually /opt/nginx or /usr/local/nginx for source compiled.
|
4
4
|
set :nginx_path_prefix, "/opt/nginx" unless exists?(:nginx_path_prefix)
|
5
5
|
|
6
6
|
# Path to the nginx erb template to be parsed before uploading to remote
|
7
7
|
set(:nginx_local_config) { "#{templates_path}/nginx.conf.erb" } unless exists?(:nginx_local_config)
|
8
8
|
|
9
|
+
# Init scripts
|
10
|
+
set(:nginx_init_local) { "#{docs_path}/nginx/nginx.init" }
|
11
|
+
set :nginx_init_temp, '/tmp/nginx.init'
|
12
|
+
set :nginx_init_remote, '/etc/init.d/nginx'
|
13
|
+
|
9
14
|
# Path to where your remote config will reside (I use a directory sites inside conf)
|
10
15
|
set(:nginx_remote_config) do
|
11
16
|
"#{nginx_path_prefix}/conf/sites/#{application}.conf"
|
@@ -14,39 +19,49 @@ Capistrano::Configuration.instance.load do
|
|
14
19
|
# Nginx tasks are not *nix agnostic, they assume you're using Debian/Ubuntu.
|
15
20
|
# Override them as needed.
|
16
21
|
namespace :nginx do
|
17
|
-
desc "|
|
22
|
+
desc "|capistrano-recipes| Parses and uploads nginx configuration for this app."
|
18
23
|
task :setup, :roles => :app , :except => { :no_release => true } do
|
19
24
|
generate_config(nginx_local_config, nginx_remote_config)
|
20
25
|
end
|
21
|
-
|
22
|
-
desc "|
|
26
|
+
|
27
|
+
desc "|capistrano-recipes| Bootstraps Nginx to init.d"
|
28
|
+
task :setup_init, :roles => :app do
|
29
|
+
upload nginx_init_local, nginx_init_temp, :via => :scp
|
30
|
+
sudo "mv #{nginx_init_temp} #{nginx_init_remote}"
|
31
|
+
# Allow executing the init.d script
|
32
|
+
sudo "chmod +x #{nginx_init_remote}"
|
33
|
+
# Make it run at bootup
|
34
|
+
sudo "update-rc.d nginx defaults"
|
35
|
+
end
|
36
|
+
|
37
|
+
desc "|capistrano-recipes| Parses config file and outputs it to STDOUT (internal task)"
|
23
38
|
task :parse, :roles => :app , :except => { :no_release => true } do
|
24
39
|
puts parse_config(nginx_local_config)
|
25
40
|
end
|
26
|
-
|
27
|
-
desc "|
|
41
|
+
|
42
|
+
desc "|capistrano-recipes| Restart nginx"
|
28
43
|
task :restart, :roles => :app , :except => { :no_release => true } do
|
29
44
|
sudo "service nginx restart"
|
30
45
|
end
|
31
|
-
|
32
|
-
desc "|
|
46
|
+
|
47
|
+
desc "|capistrano-recipes| Stop nginx"
|
33
48
|
task :stop, :roles => :app , :except => { :no_release => true } do
|
34
49
|
sudo "service nginx stop"
|
35
50
|
end
|
36
|
-
|
37
|
-
desc "|
|
51
|
+
|
52
|
+
desc "|capistrano-recipes| Start nginx"
|
38
53
|
task :start, :roles => :app , :except => { :no_release => true } do
|
39
54
|
sudo "service nginx start"
|
40
55
|
end
|
41
56
|
|
42
|
-
desc "|
|
57
|
+
desc "|capistrano-recipes| Show nginx status"
|
43
58
|
task :status, :roles => :app , :except => { :no_release => true } do
|
44
59
|
sudo "service nginx status"
|
45
60
|
end
|
46
61
|
end
|
47
|
-
|
62
|
+
|
48
63
|
after 'deploy:setup' do
|
49
64
|
nginx.setup if Capistrano::CLI.ui.agree("Create nginx configuration file? [Yn]")
|
50
|
-
end if is_using_nginx
|
65
|
+
end if is_using_nginx
|
51
66
|
end
|
52
67
|
|
data/lib/recipes/passenger.rb
CHANGED
@@ -1,16 +1,16 @@
|
|
1
1
|
Capistrano::Configuration.instance.load do
|
2
2
|
namespace :passenger do
|
3
|
-
desc "|
|
3
|
+
desc "|capistrano-recipes| Restart Rails app running under Phusion Passenger by touching restart.txt"
|
4
4
|
task :bounce, :roles => :app do
|
5
5
|
run "#{sudo} touch #{current_path}/tmp/restart.txt"
|
6
6
|
end
|
7
7
|
|
8
|
-
desc "|
|
8
|
+
desc "|capistrano-recipes| Inspect Phusion Passenger's memory usage."
|
9
9
|
task :memory, :roles => :app do
|
10
10
|
run "sudo passenger-memory-stats"
|
11
11
|
end
|
12
12
|
|
13
|
-
desc "|
|
13
|
+
desc "|capistrano-recipes| Inspect Phusion Passenger's internal status."
|
14
14
|
task :status, :roles => :app do
|
15
15
|
run "sudo passenger-status"
|
16
16
|
end
|
data/lib/recipes/resque.rb
CHANGED
@@ -1,45 +1,45 @@
|
|
1
1
|
Capistrano::Configuration.instance.load do
|
2
2
|
namespace :resque do
|
3
3
|
namespace :worker do
|
4
|
-
desc "|
|
4
|
+
desc "|capistrano-recipes| List all workers"
|
5
5
|
task :list, :roles => :app do
|
6
6
|
run "cd #{current_path} && #{sudo} resque list"
|
7
7
|
end
|
8
8
|
|
9
|
-
desc "|
|
9
|
+
desc "|capistrano-recipes| Starts the workers"
|
10
10
|
task :start, :roles => :app do
|
11
11
|
run "cd #{current_path} && #{sudo} god start #{resque_service}"
|
12
12
|
end
|
13
13
|
|
14
|
-
desc "|
|
14
|
+
desc "|capistrano-recipes| Stops the workers"
|
15
15
|
task :stop, :roles => :app do
|
16
16
|
run "cd #{current_path} && #{sudo} god stop #{resque_service}"
|
17
17
|
end
|
18
18
|
|
19
|
-
desc "|
|
19
|
+
desc "|capistrano-recipes| Restart all workers"
|
20
20
|
task :restart, :roles => :app do
|
21
21
|
run "cd #{current_path} && #{sudo} god restart #{resque_service}"
|
22
22
|
end
|
23
23
|
end
|
24
24
|
|
25
25
|
namespace :web do
|
26
|
-
desc "|
|
26
|
+
desc "|capistrano-recipes| Starts the resque web interface"
|
27
27
|
task :start, :roles => :app do
|
28
28
|
run "cd #{current_path}; resque-web -p 9000 -e #{rails_env} "
|
29
29
|
end
|
30
30
|
|
31
|
-
desc "|
|
31
|
+
desc "|capistrano-recipes| Stops the resque web interface"
|
32
32
|
task :stop, :roles => :app do
|
33
33
|
run "cd #{current_path}; resque-web -K"
|
34
34
|
end
|
35
35
|
|
36
|
-
desc "|
|
36
|
+
desc "|capistrano-recipes| Restarts the resque web interface "
|
37
37
|
task :restart, :roles => :app do
|
38
38
|
stop
|
39
39
|
start
|
40
40
|
end
|
41
41
|
|
42
|
-
desc "|
|
42
|
+
desc "|capistrano-recipes| Shows the status of the resque web interface"
|
43
43
|
task :status, :roles => :app do
|
44
44
|
run "cd #{current_path}; resque-web -S"
|
45
45
|
end
|
data/lib/recipes/sphinx.rb
CHANGED
@@ -1,31 +1,31 @@
|
|
1
1
|
Capistrano::Configuration.instance.load do
|
2
2
|
namespace :sphinx do
|
3
|
-
desc "|
|
3
|
+
desc "|capistrano-recipes| Generates Configuration file for TS"
|
4
4
|
task :config, :roles => :app do
|
5
5
|
run "cd #{current_path}; #{rake_bin} RAILS_ENV=#{rails_env} ts:config"
|
6
6
|
end
|
7
7
|
|
8
|
-
desc "|
|
8
|
+
desc "|capistrano-recipes| Starts TS"
|
9
9
|
task :start, :roles => :app do
|
10
10
|
run "cd #{current_path}; #{rake_bin} RAILS_ENV=#{rails_env} ts:start"
|
11
11
|
end
|
12
12
|
|
13
|
-
desc "|
|
13
|
+
desc "|capistrano-recipes| Stops TS"
|
14
14
|
task :stop, :roles => :app do
|
15
15
|
run "cd #{current_path}; #{rake_bin} RAILS_ENV=#{rails_env} ts:stop"
|
16
16
|
end
|
17
17
|
|
18
|
-
desc "|
|
18
|
+
desc "|capistrano-recipes| Rebuild TS"
|
19
19
|
task :rebuild, :roles => :app do
|
20
20
|
run "cd #{current_path}; #{rake_bin} RAILS_ENV=#{rails_env} ts:rebuild"
|
21
21
|
end
|
22
22
|
|
23
|
-
desc "|
|
23
|
+
desc "|capistrano-recipes| Indexes TS"
|
24
24
|
task :index, :roles => :app do
|
25
25
|
run "cd #{current_path}; #{rake_bin} RAILS_ENV=#{rails_env} ts:in"
|
26
26
|
end
|
27
27
|
|
28
|
-
desc "|
|
28
|
+
desc "|capistrano-recipes| Re-establishes symlinks"
|
29
29
|
task :symlinks do
|
30
30
|
run <<-CMD
|
31
31
|
rm -rf #{current_path}/db/sphinx && ln -nfs #{shared_path}/db/sphinx #{current_path}/db/sphinx
|
data/lib/recipes/symlinks.rb
CHANGED
@@ -7,7 +7,7 @@ Capistrano::Configuration.instance.load do
|
|
7
7
|
'pids' => 'tmp/pids' } unless exists?(:weird_symlinks)
|
8
8
|
|
9
9
|
namespace :symlinks do
|
10
|
-
desc "|
|
10
|
+
desc "|capistrano-recipes| Make all the symlinks in a single run"
|
11
11
|
task :make, :roles => :app, :except => { :no_release => true } do
|
12
12
|
commands = normal_symlinks.map do |path|
|
13
13
|
"rm -rf #{current_path}/#{path} && \
|
data/lib/recipes/unicorn.rb
CHANGED
@@ -44,23 +44,23 @@ Capistrano::Configuration.instance.load do
|
|
44
44
|
# Unicorn
|
45
45
|
#------------------------------------------------------------------------------
|
46
46
|
namespace :unicorn do
|
47
|
-
desc "|
|
47
|
+
desc "|capistrano-recipes| Starts unicorn directly"
|
48
48
|
task :start, :roles => :app do
|
49
49
|
run unicorn_start_cmd
|
50
50
|
end
|
51
51
|
|
52
|
-
desc "|
|
52
|
+
desc "|capistrano-recipes| Stops unicorn directly"
|
53
53
|
task :stop, :roles => :app do
|
54
54
|
run unicorn_stop_cmd
|
55
55
|
end
|
56
56
|
|
57
|
-
desc "
|
57
|
+
desc "|capistrano-recipes| Restarts unicorn directly"
|
58
58
|
task :restart, :roles => :app do
|
59
59
|
run unicorn_restart_cmd
|
60
60
|
end
|
61
61
|
|
62
62
|
desc <<-EOF
|
63
|
-
|
|
63
|
+
|capistrano-recipes| Parses the configuration file through ERB to fetch our variables and \
|
64
64
|
uploads the result to #{unicorn_remote_config}, to be loaded by whoever is booting \
|
65
65
|
up the unicorn.
|
66
66
|
EOF
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dark-capistrano-recipes
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 61
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
-
|
10
|
-
version: 0.
|
8
|
+
- 8
|
9
|
+
- 1
|
10
|
+
version: 0.8.1
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Phil Misiowiec
|
@@ -16,12 +16,11 @@ autorequire:
|
|
16
16
|
bindir: bin
|
17
17
|
cert_chain: []
|
18
18
|
|
19
|
-
date: 2011-
|
19
|
+
date: 2011-07-12 00:00:00 -03:00
|
20
20
|
default_executable:
|
21
21
|
dependencies:
|
22
22
|
- !ruby/object:Gem::Dependency
|
23
|
-
|
24
|
-
prerelease: false
|
23
|
+
type: :runtime
|
25
24
|
requirement: &id001 !ruby/object:Gem::Requirement
|
26
25
|
none: false
|
27
26
|
requirements:
|
@@ -33,11 +32,11 @@ dependencies:
|
|
33
32
|
- 5
|
34
33
|
- 9
|
35
34
|
version: 2.5.9
|
36
|
-
|
35
|
+
name: capistrano
|
37
36
|
version_requirements: *id001
|
38
|
-
- !ruby/object:Gem::Dependency
|
39
|
-
name: capistrano-ext
|
40
37
|
prerelease: false
|
38
|
+
- !ruby/object:Gem::Dependency
|
39
|
+
type: :runtime
|
41
40
|
requirement: &id002 !ruby/object:Gem::Requirement
|
42
41
|
none: false
|
43
42
|
requirements:
|
@@ -49,8 +48,84 @@ dependencies:
|
|
49
48
|
- 2
|
50
49
|
- 1
|
51
50
|
version: 1.2.1
|
52
|
-
|
51
|
+
name: capistrano-ext
|
53
52
|
version_requirements: *id002
|
53
|
+
prerelease: false
|
54
|
+
- !ruby/object:Gem::Dependency
|
55
|
+
type: :development
|
56
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
hash: 3
|
62
|
+
segments:
|
63
|
+
- 0
|
64
|
+
version: "0"
|
65
|
+
name: shoulda
|
66
|
+
version_requirements: *id003
|
67
|
+
prerelease: false
|
68
|
+
- !ruby/object:Gem::Dependency
|
69
|
+
type: :development
|
70
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
71
|
+
none: false
|
72
|
+
requirements:
|
73
|
+
- - ~>
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
hash: 23
|
76
|
+
segments:
|
77
|
+
- 1
|
78
|
+
- 0
|
79
|
+
- 0
|
80
|
+
version: 1.0.0
|
81
|
+
name: bundler
|
82
|
+
version_requirements: *id004
|
83
|
+
prerelease: false
|
84
|
+
- !ruby/object:Gem::Dependency
|
85
|
+
type: :development
|
86
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
87
|
+
none: false
|
88
|
+
requirements:
|
89
|
+
- - ~>
|
90
|
+
- !ruby/object:Gem::Version
|
91
|
+
hash: 7
|
92
|
+
segments:
|
93
|
+
- 1
|
94
|
+
- 6
|
95
|
+
- 4
|
96
|
+
version: 1.6.4
|
97
|
+
name: jeweler
|
98
|
+
version_requirements: *id005
|
99
|
+
prerelease: false
|
100
|
+
- !ruby/object:Gem::Dependency
|
101
|
+
type: :development
|
102
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
103
|
+
none: false
|
104
|
+
requirements:
|
105
|
+
- - ">="
|
106
|
+
- !ruby/object:Gem::Version
|
107
|
+
hash: 11
|
108
|
+
segments:
|
109
|
+
- 2
|
110
|
+
- 4
|
111
|
+
version: "2.4"
|
112
|
+
name: rdoc
|
113
|
+
version_requirements: *id006
|
114
|
+
prerelease: false
|
115
|
+
- !ruby/object:Gem::Dependency
|
116
|
+
type: :development
|
117
|
+
requirement: &id007 !ruby/object:Gem::Requirement
|
118
|
+
none: false
|
119
|
+
requirements:
|
120
|
+
- - ">="
|
121
|
+
- !ruby/object:Gem::Version
|
122
|
+
hash: 3
|
123
|
+
segments:
|
124
|
+
- 0
|
125
|
+
version: "0"
|
126
|
+
name: rcov
|
127
|
+
version_requirements: *id007
|
128
|
+
prerelease: false
|
54
129
|
description: Extend the Capistrano gem with these useful recipes
|
55
130
|
email: leonardobighetti@gmail.com
|
56
131
|
executables: []
|
@@ -61,15 +136,17 @@ extra_rdoc_files:
|
|
61
136
|
- LICENSE
|
62
137
|
- README.rdoc
|
63
138
|
files:
|
64
|
-
- .
|
139
|
+
- .rvmrc
|
140
|
+
- Gemfile
|
65
141
|
- LICENSE
|
66
142
|
- README.rdoc
|
67
143
|
- Rakefile
|
68
|
-
- VERSION
|
144
|
+
- VERSION
|
69
145
|
- dark-capistrano-recipes.gemspec
|
70
146
|
- doc/god/god
|
71
147
|
- doc/god/god.conf
|
72
148
|
- doc/god/god.init
|
149
|
+
- doc/nginx/nginx.init
|
73
150
|
- generators/app.god.erb
|
74
151
|
- generators/nginx.conf.erb
|
75
152
|
- generators/unicorn.rb.erb
|
@@ -91,11 +168,11 @@ files:
|
|
91
168
|
- lib/recipes/unicorn.rb
|
92
169
|
has_rdoc: true
|
93
170
|
homepage: http://github.com/darkside/capistrano-recipes
|
94
|
-
licenses:
|
95
|
-
|
171
|
+
licenses:
|
172
|
+
- MIT
|
96
173
|
post_install_message:
|
97
|
-
rdoc_options:
|
98
|
-
|
174
|
+
rdoc_options: []
|
175
|
+
|
99
176
|
require_paths:
|
100
177
|
- lib
|
101
178
|
required_ruby_version: !ruby/object:Gem::Requirement
|
@@ -119,9 +196,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
119
196
|
requirements: []
|
120
197
|
|
121
198
|
rubyforge_project:
|
122
|
-
rubygems_version: 1.
|
199
|
+
rubygems_version: 1.6.2
|
123
200
|
signing_key:
|
124
201
|
specification_version: 3
|
125
|
-
summary:
|
202
|
+
summary: Capistrano recipes
|
126
203
|
test_files: []
|
127
204
|
|
data/.gitignore
DELETED
data/VERSION.yml
DELETED