We got nominated! Help us out and vote for GitHub as Best Bootstrapped Startup of 2008. (You can vote once a day.) [ hide ]

public
Rubygem
Description: Capistrano Recipies for God
Homepage: http://github.com/jnewland/san_juan
Clone URL: git://github.com/jnewland/san_juan.git
document overriding capistrano's deploy:start, deploy:stop, and 
deploy:restart tasks
jnewland (author)
Tue May 20 08:18:08 -0700 2008
commit  117f96c537e7217508ed9be139fc74f28dd93bdb
tree    8b63c742401b2c4387c59748fc5b8f8e377ca10c
parent  f2044ab93f46a7b56d33e0e309a7f9acda985eb1
...
26
27
28
29
30
 
 
31
32
33
 
 
34
35
36
...
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
76
77
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
78
79
80
...
89
90
91
92
93
94
95
96
97
98
 
 
 
 
 
 
99
100
101
...
26
27
28
 
 
29
30
31
 
 
32
33
34
35
36
...
45
46
47
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
...
117
118
119
 
 
 
120
121
 
 
122
123
124
125
126
127
128
129
130
0
@@ -26,11 +26,11 @@ In your Capistrano deploy recipie:
0
 <code>
0
 require 'san_juan'
0
 
0
-role :foo, 'foo.example.com'
0
-role :bar, 'bar.example.com'
0
+role :app, 'foo.example.com'
0
+role :web, 'bar.example.com'
0
 
0
-san_juan.role :foo, %w(mongrels memcached)
0
-san_juan.role :bar, %w(nginx)
0
+san_juan.role :app, %w(mongrels memcached)
0
+san_juan.role :web, %w(nginx)
0
 </code>
0
 </pre>
0
 
0
@@ -45,36 +45,64 @@ Now, check out @cap -T@:
0
   cap god:all:start_interactive # Start god interactively
0
   cap god:all:status # Describe the status of the running tasks on...
0
   cap god:all:terminate # Terminate god and all monitored processes
0
- cap god:bar:nginx:log # Log nginx
0
- cap god:bar:nginx:remove # Remove nginx
0
- cap god:bar:nginx:restart # Restart nginx
0
- cap god:bar:nginx:start # Start nginx
0
- cap god:bar:nginx:stop # Stop nginx
0
- cap god:bar:nginx:unmonitor # Unmonitor nginx
0
- cap god:bar:quit # Quit god, but not the processes it's monito...
0
- cap god:bar:reload # Reload the god config file
0
- cap god:bar:start # Start god
0
- cap god:bar:start_interactive # Start god interactively
0
- cap god:bar:terminate # Terminate god and all monitored processes
0
- cap god:foo:memcached:log # Log memcached
0
- cap god:foo:memcached:remove # Remove memcached
0
- cap god:foo:memcached:restart # Restart memcached
0
- cap god:foo:memcached:start # Start memcached
0
- cap god:foo:memcached:stop # Stop memcached
0
- cap god:foo:memcached:unmonitor # Unmonitor memcached
0
- cap god:foo:mongrels:log # Log mongrels
0
- cap god:foo:mongrels:remove # Remove mongrels
0
- cap god:foo:mongrels:restart # Restart mongrels
0
- cap god:foo:mongrels:start # Start mongrels
0
- cap god:foo:mongrels:stop # Stop mongrels
0
- cap god:foo:mongrels:unmonitor # Unmonitor mongrels
0
- cap god:foo:quit # Quit god, but not the processes it's monito...
0
- cap god:foo:reload # Reload the god config file
0
- cap god:foo:start # Start god
0
- cap god:foo:start_interactive # Start god interactively
0
- cap god:foo:terminate # Terminate god and all monitored processes
0
+ cap god:app:memcached:log # Log memcached
0
+ cap god:app:memcached:remove # Remove memcached
0
+ cap god:app:memcached:restart # Restart memcached
0
+ cap god:app:memcached:start # Start memcached
0
+ cap god:app:memcached:stop # Stop memcached
0
+ cap god:app:memcached:unmonitor # Unmonitor memcached
0
+ cap god:app:mongrels:log # Log mongrels
0
+ cap god:app:mongrels:remove # Remove mongrels
0
+ cap god:app:mongrels:restart # Restart mongrels
0
+ cap god:app:mongrels:start # Start mongrels
0
+ cap god:app:mongrels:stop # Stop mongrels
0
+ cap god:app:mongrels:unmonitor # Unmonitor mongrels
0
+ cap god:app:quit # Quit god, but not the processes it's monito...
0
+ cap god:app:reload # Reload the god config file
0
+ cap god:app:start # Start god
0
+ cap god:app:start_interactive # Start god interactively
0
+ cap god:app:terminate # Terminate god and all monitored processes
0
+ cap god:web:nginx:log # Log nginx
0
+ cap god:web:nginx:remove # Remove nginx
0
+ cap god:web:nginx:restart # Restart nginx
0
+ cap god:web:nginx:start # Start nginx
0
+ cap god:web:nginx:stop # Stop nginx
0
+ cap god:web:nginx:unmonitor # Unmonitor nginx
0
+ cap god:web:quit # Quit god, but not the processes it's monito...
0
+ cap god:web:reload # Reload the god config file
0
+ cap god:web:start # Start god
0
+ cap god:web:start_interactive # Start god interactively
0
+ cap god:web:terminate # Terminate god and all monitored processes
0
   ...
0
 </pre>
0
+</code>
0
+
0
+To make capistrano start, stop, and restart your app using God, override the
0
+@deploy:start@, @deploy:stop@, and @deploy:restart@ tasks:
0
+
0
+<pre>
0
+<code>
0
+namespace :deploy do
0
+ desc "Use god to restart the app"
0
+ task :restart do
0
+ god.all.reload #ensures any changes to the god config are applied at deploy
0
+ god.app.mongrels.restart
0
+ # god.web.nginx.restart
0
+ # ...
0
+ end
0
+
0
+ desc "Use god to start the app"
0
+ task :start do
0
+ god.all.start
0
+ end
0
+
0
+ desc "Use god to stop the app"
0
+ task :stop do
0
+ god.all.terminate
0
+ end
0
+end
0
+</pre>
0
+</code>
0
 
0
 h2. Tweaks
0
 
0
@@ -89,13 +117,14 @@ This can be changed by setting the @god_config_path@ capistrano variable:
0
 <code>
0
 require 'san_juan'
0
 
0
-role :foo, 'foo.example.com'
0
-role :bar, 'bar.example.com'
0
-
0
 set :god_config_path, "/path/to/config"
0
 
0
-san_juan.role :foo, %w(mongrels memcached)
0
-san_juan.role :bar, %w(nginx)
0
+role :app, 'foo.example.com'
0
+role :web, 'bar.example.com'
0
+
0
+san_juan.role :app, %w(mongrels memcached)
0
+san_juan.role :web, %w(nginx)
0
+
0
 </code>
0
 </pre>
0
 

Comments

    No one has commented yet.