mongrel_cluster 0.2.0 → 0.2.1
Sign up to get free protection for your applications and to get access to all the features.
- data/COPYING +1 -1
- data/LICENSE +1 -1
- data/README +2 -2
- data/Rakefile +2 -2
- data/bin/mongrel_cluster_ctl +6 -4
- data/lib/mongrel_cluster/init.rb +94 -114
- data/lib/mongrel_cluster/recipes.rb +5 -3
- data/resources/mongrel_cluster +7 -0
- metadata +5 -5
data/COPYING
CHANGED
data/LICENSE
CHANGED
data/README
CHANGED
@@ -14,7 +14,7 @@ mongrel_rails cluster::restart
|
|
14
14
|
Stop cluster:
|
15
15
|
mongrel_rails cluster::stop
|
16
16
|
|
17
|
-
|
17
|
+
Capistrano Recipe
|
18
18
|
|
19
19
|
Add to config/deploy.rb:
|
20
20
|
require 'mongrel_cluster/recipes'
|
@@ -39,7 +39,7 @@ restart_mongrel_cluster: Restart the Mongrel processes on the app server by star
|
|
39
39
|
restart: Calls restart_mongrel_cluster to allow Mongrel to be used with the standard Capistrano deploy task.
|
40
40
|
spinner: Calls start_mongrel_cluster to allow Mongrel to be used with the standard Capistrano cold_deploy task.
|
41
41
|
|
42
|
-
|
42
|
+
Supporting starting clusters on boot.
|
43
43
|
1. Create mongrel_cluster conf directory (/etc/mongrel_cluster).
|
44
44
|
2. Assign ownership to your capistrano user.
|
45
45
|
3. Copy the init.d script from this gem's resouces directory /etc/init.d.
|
data/Rakefile
CHANGED
@@ -15,7 +15,7 @@ setup_rdoc ['README', 'LICENSE', 'COPYING', 'lib/**/*.rb', 'doc/**/*.rdoc']
|
|
15
15
|
desc "Does a full compile, test run"
|
16
16
|
task :default => [:test, :package]
|
17
17
|
|
18
|
-
version="0.2.
|
18
|
+
version="0.2.1"
|
19
19
|
name="mongrel_cluster"
|
20
20
|
|
21
21
|
setup_gem(name, version) do |spec|
|
@@ -23,7 +23,7 @@ setup_gem(name, version) do |spec|
|
|
23
23
|
spec.description = spec.summary
|
24
24
|
spec.author="Bradley Taylor"
|
25
25
|
spec.add_dependency('gem_plugin', '>= 0.2.1')
|
26
|
-
spec.add_dependency('mongrel', '>= 0.3.13')
|
26
|
+
spec.add_dependency('mongrel', '>= 0.3.13.4')
|
27
27
|
spec.files += Dir.glob("resources/**/*")
|
28
28
|
spec.has_rdoc = false
|
29
29
|
spec.files += Dir.glob("bin/*")
|
data/bin/mongrel_cluster_ctl
CHANGED
@@ -1,12 +1,14 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
-
# Copyright (c) 2006 Bradley Taylor, bradley@
|
2
|
+
# Copyright (c) 2006 Bradley Taylor, bradley@fluxura.com
|
3
3
|
|
4
4
|
require 'optparse'
|
5
5
|
|
6
6
|
def run(command, verbose)
|
7
|
-
Dir.chdir @options[:conf_path] do
|
8
|
-
Dir.glob("*.yml")
|
9
|
-
|
7
|
+
Dir.chdir @options[:conf_path] do
|
8
|
+
confs = Dir.glob("*.yml")
|
9
|
+
confs += Dir.glob("*.conf")
|
10
|
+
confs.each do |conf|
|
11
|
+
cmd = "mongrel_rails cluster::#{command} -c #{conf}"
|
10
12
|
cmd += " -v" if verbose
|
11
13
|
puts cmd if verbose
|
12
14
|
output = `#{cmd}`
|
data/lib/mongrel_cluster/init.rb
CHANGED
@@ -4,152 +4,130 @@ require 'yaml'
|
|
4
4
|
|
5
5
|
module Cluster
|
6
6
|
|
7
|
+
module ExecBase
|
8
|
+
include Mongrel::Command::Base
|
9
|
+
|
10
|
+
def validate
|
11
|
+
valid_exists?(@config_file, "Configuration file does not exist. Run mongrel_rails cluster::configure.")
|
12
|
+
return @valid
|
13
|
+
end
|
14
|
+
|
15
|
+
def read_options
|
16
|
+
@options = {
|
17
|
+
"environment" => ENV['RAILS_ENV'] || "development",
|
18
|
+
"port" => 3000,
|
19
|
+
"pid_file" => "log/mongrel.pid",
|
20
|
+
"servers" => 2
|
21
|
+
}
|
22
|
+
conf = YAML.load_file(@config_file)
|
23
|
+
@options.merge! conf if conf
|
24
|
+
end
|
25
|
+
|
26
|
+
def start
|
27
|
+
read_options
|
28
|
+
port = @options["port"].to_i - 1
|
29
|
+
pid = @options["pid_file"].split(".")
|
30
|
+
puts "Starting #{@options["servers"]} Mongrel servers..."
|
31
|
+
1.upto(@options["servers"].to_i) do |i|
|
32
|
+
argv = [ "mongrel_rails" ]
|
33
|
+
argv << "start"
|
34
|
+
argv << "-d"
|
35
|
+
argv << "-e #{@options["environment"]}" if @options["environment"]
|
36
|
+
argv << "-p #{port+i}"
|
37
|
+
argv << "-a #{@options["address"]}" if @options["address"]
|
38
|
+
argv << "-l #{@options["log_file"]}" if @options["log_file"]
|
39
|
+
argv << "-P #{pid[0]}.#{port+i}.#{pid[1]}"
|
40
|
+
argv << "-c #{@options["cwd"]}" if @options["cwd"]
|
41
|
+
argv << "-t #{@options["timeout"]}" if @options["timeout"]
|
42
|
+
argv << "-m #{@options["mime_map"]}" if @options["mime_map"]
|
43
|
+
argv << "-r #{@options["docroot"]}" if @options["docroot"]
|
44
|
+
argv << "-n #{@options["num_procs"]}" if @options["num_procs"]
|
45
|
+
argv << "-B" if @options["debug"]
|
46
|
+
argv << "-S #{@options["config_script"]}" if @options["config_script"]
|
47
|
+
argv << "--user #{@options["user"]}" if @options["user"]
|
48
|
+
argv << "--group #{@options["group"]}" if @options["group"]
|
49
|
+
argv << "--prefix #{@options["prefix"]}" if @options["prefix"]
|
50
|
+
cmd = argv.join " "
|
51
|
+
|
52
|
+
puts cmd if @verbose
|
53
|
+
output = `#{cmd}`
|
54
|
+
unless $?.success?
|
55
|
+
puts cmd unless @verbose
|
56
|
+
puts output
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
def stop
|
62
|
+
read_options
|
63
|
+
port = @options["port"].to_i - 1
|
64
|
+
pid = @options["pid_file"].split(".")
|
65
|
+
puts "Stopping #{@options["servers"]} Mongrel servers..."
|
66
|
+
1.upto(@options["servers"].to_i) do |i|
|
67
|
+
argv = [ "mongrel_rails" ]
|
68
|
+
argv << "stop"
|
69
|
+
argv << "-P #{pid[0]}.#{port+i}.#{pid[1]}"
|
70
|
+
argv << "-c #{@options["cwd"]}" if @options["cwd"]
|
71
|
+
argv << "-f" if @force
|
72
|
+
cmd = argv.join " "
|
73
|
+
puts cmd if @verbose
|
74
|
+
output = `#{cmd}`
|
75
|
+
unless $?.success?
|
76
|
+
puts cmd unless @verbose
|
77
|
+
puts output
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
end
|
83
|
+
|
7
84
|
class Start < GemPlugin::Plugin "/commands"
|
8
|
-
include
|
85
|
+
include ExecBase
|
9
86
|
|
10
87
|
def configure
|
11
88
|
options [
|
12
|
-
['-C', '--config PATH', "Path to configuration file", :@config_file, "config/mongrel_cluster.yml"],
|
89
|
+
['-C', '--config PATH', "Path to cluster configuration file", :@config_file, "config/mongrel_cluster.yml"],
|
13
90
|
['-v', '--verbose', "Print all called commands and output.", :@verbose, false]
|
14
91
|
]
|
15
92
|
end
|
16
93
|
|
17
|
-
def validate
|
18
|
-
valid_exists?(@config_file, "Configuration file does not exist. Run mongrel_rails cluster::configure.")
|
19
|
-
return @valid
|
20
|
-
end
|
21
|
-
|
22
94
|
def run
|
23
|
-
|
24
|
-
"port" => 3000,
|
25
|
-
"pid_file" => "log/mongrel.pid",
|
26
|
-
"servers" => 2
|
27
|
-
}
|
28
|
-
|
29
|
-
@conf_options = YAML.load_file(@config_file)
|
30
|
-
@options.merge! @conf_options if @conf_options
|
31
|
-
port = @options["port"].to_i - 1
|
32
|
-
pid = @options["pid_file"].split(".")
|
33
|
-
puts "Starting #{@options["servers"]} Mongrel servers..."
|
34
|
-
1.upto(@options["servers"].to_i) do |i|
|
35
|
-
argv = [ "mongrel_rails" ]
|
36
|
-
argv << "start"
|
37
|
-
argv << "-d"
|
38
|
-
argv << "-e #{@options["environment"]}" if @options["environment"]
|
39
|
-
argv << "-p #{port+i}"
|
40
|
-
argv << "-a #{@options["address"]}" if @options["address"]
|
41
|
-
argv << "-l #{@options["log_file"]}" if @options["log_file"]
|
42
|
-
argv << "-P #{pid[0]}.#{port+i}.#{pid[1]}"
|
43
|
-
argv << "-c #{@options["cwd"]}" if @options["cwd"]
|
44
|
-
argv << "-t #{@options["timeout"]}" if @options["timeout"]
|
45
|
-
argv << "-m #{@options["mime_map"]}" if @options["mime_map"]
|
46
|
-
argv << "-r #{@options["docroot"]}" if @options["docroot"]
|
47
|
-
argv << "-n #{@options["num_procs"]}" if @options["num_procs"]
|
48
|
-
argv << "-B" if @options["debug"]
|
49
|
-
argv << "-S #{@options["config_script"]}" if @options["config_script"]
|
50
|
-
argv << "--user #{@options["user"]}" if @options["user"]
|
51
|
-
argv << "--group #{@options["group"]}" if @options["group"]
|
52
|
-
cmd = argv.join " "
|
53
|
-
|
54
|
-
puts cmd if @verbose
|
55
|
-
output = `#{cmd}`
|
56
|
-
unless $?.success?
|
57
|
-
puts cmd unless @verbose
|
58
|
-
puts output
|
59
|
-
end
|
60
|
-
end
|
95
|
+
start
|
61
96
|
end
|
62
97
|
end
|
63
98
|
|
64
99
|
class Stop < GemPlugin::Plugin "/commands"
|
65
|
-
include
|
100
|
+
include ExecBase
|
66
101
|
|
67
102
|
def configure
|
68
103
|
options [
|
69
|
-
['-C', '--config PATH', "Path to
|
104
|
+
['-C', '--config PATH', "Path to cluster configuration file", :@config_file, "config/mongrel_cluster.yml"],
|
70
105
|
['-f', '--force', "Force the shutdown.", :@force, false],
|
71
106
|
['-v', '--verbose', "Print all called commands and output.", :@verbose, false]
|
72
107
|
]
|
73
108
|
end
|
74
|
-
|
75
|
-
def validate
|
76
|
-
valid_exists?(@config_file, "Configuration file does not exist. Run mongrel_rails cluster::configure.")
|
77
|
-
return @valid
|
78
|
-
end
|
79
109
|
|
80
110
|
def run
|
81
|
-
|
82
|
-
"environment" => ENV['RAILS_ENV'] || "development",
|
83
|
-
"port" => 3000,
|
84
|
-
"pid_file" => "log/mongrel.pid",
|
85
|
-
"servers" => 2
|
86
|
-
}
|
87
|
-
|
88
|
-
@conf_options = YAML.load_file(@config_file)
|
89
|
-
@options.merge! @conf_options if @conf_options
|
90
|
-
port = @options["port"].to_i - 1
|
91
|
-
pid = @options["pid_file"].split(".")
|
92
|
-
puts "Stopping #{@options["servers"]} Mongrel servers..."
|
93
|
-
1.upto(@options["servers"].to_i) do |i|
|
94
|
-
argv = [ "mongrel_rails" ]
|
95
|
-
argv << "stop"
|
96
|
-
argv << "-P #{pid[0]}.#{port+i}.#{pid[1]}"
|
97
|
-
argv << "-c #{@options["cwd"]}" if @options["cwd"]
|
98
|
-
argv << "-f" if @force
|
99
|
-
cmd = argv.join " "
|
100
|
-
puts cmd if @verbose
|
101
|
-
output = `#{cmd}`
|
102
|
-
unless $?.success?
|
103
|
-
puts cmd unless @verbose
|
104
|
-
puts output
|
105
|
-
end
|
106
|
-
end
|
111
|
+
stop
|
107
112
|
end
|
108
113
|
end
|
109
114
|
|
110
115
|
class Restart < GemPlugin::Plugin "/commands"
|
111
|
-
include
|
116
|
+
include ExecBase
|
112
117
|
|
113
118
|
def configure
|
114
119
|
options [
|
115
|
-
['-C', '--config PATH', "Path to
|
116
|
-
['-
|
120
|
+
['-C', '--config PATH', "Path to cluster configuration file", :@config_file, "config/mongrel_cluster.yml"],
|
121
|
+
['-f', '--force', "Force the shutdown.", :@force, false],
|
117
122
|
['-v', '--verbose', "Print all called commands and output.", :@verbose, false]
|
118
123
|
]
|
119
124
|
end
|
120
|
-
|
121
|
-
def validate
|
122
|
-
valid_exists?(@config_file, "Configuration file does not exist. Run mongrel_rails cluster::configure.")
|
123
|
-
return @valid
|
124
|
-
end
|
125
125
|
|
126
126
|
def run
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
}
|
132
|
-
|
133
|
-
@conf_options = YAML.load_file(@config_file)
|
134
|
-
@options.merge! @conf_options if @conf_options
|
135
|
-
port = @options["port"].to_i - 1
|
136
|
-
pid = @options["pid_file"].split(".")
|
137
|
-
puts "Restarting #{@options["servers"]} Mongrel servers..."
|
138
|
-
1.upto(@options["servers"].to_i) do |i|
|
139
|
-
argv = [ "mongrel_rails" ]
|
140
|
-
argv << "restart"
|
141
|
-
argv << "-P #{pid[0]}.#{port+i}.#{pid[1]}"
|
142
|
-
argv << "-c #{@options["cwd"]}" if @options["cwd"]
|
143
|
-
argv << "-s" if @soft
|
144
|
-
cmd = argv.join " "
|
145
|
-
puts cmd if @verbose
|
146
|
-
output = `#{cmd}`
|
147
|
-
unless $?.success?
|
148
|
-
puts cmd unless @verbose
|
149
|
-
puts output
|
150
|
-
end
|
151
|
-
end
|
152
|
-
end
|
127
|
+
stop
|
128
|
+
start
|
129
|
+
end
|
130
|
+
|
153
131
|
end
|
154
132
|
|
155
133
|
class Configure < GemPlugin::Plugin "/commands"
|
@@ -170,9 +148,10 @@ module Cluster
|
|
170
148
|
['-B', '--debug', "Enable debugging mode", :@debug, nil],
|
171
149
|
['-S', '--script PATH', "Load the given file as an extra config script.", :@config_script, nil],
|
172
150
|
['-N', '--num-servers INT', "Number of Mongrel servers", :@servers, 2],
|
173
|
-
['-C', '--config PATH', "Path to
|
151
|
+
['-C', '--config PATH', "Path to cluster configuration file", :@config_file, "config/mongrel_cluster.yml"],
|
174
152
|
['', '--user USER', "User to run as", :@user, nil],
|
175
|
-
['', '--group GROUP', "Group to run as", :@group, nil]
|
153
|
+
['', '--group GROUP', "Group to run as", :@group, nil],
|
154
|
+
['', '--prefix PREFIX', "Rails prefix to use", :@prefix, nil]
|
176
155
|
]
|
177
156
|
end
|
178
157
|
|
@@ -204,6 +183,7 @@ module Cluster
|
|
204
183
|
@options["cwd"] = @cwd if @cwd
|
205
184
|
@options["user"] = @user if @user
|
206
185
|
@options["group"] = @group if @group
|
186
|
+
@options["prefix"] = @prefix if @prefix
|
207
187
|
|
208
188
|
puts "Writing configuration file to #{@config_file}."
|
209
189
|
File.open(@config_file,"w") {|f| f.write(@options.to_yaml)}
|
@@ -6,6 +6,7 @@ Capistrano.configuration(:must_exist).load do
|
|
6
6
|
set :mongrel_conf, nil
|
7
7
|
set :mongrel_user, nil
|
8
8
|
set :mongrel_group, nil
|
9
|
+
set :mongrel_prefix, nil
|
9
10
|
|
10
11
|
desc <<-DESC
|
11
12
|
Configure Mongrel processes on the app server. This uses the :use_sudo
|
@@ -25,6 +26,7 @@ Capistrano.configuration(:must_exist).load do
|
|
25
26
|
argv << "-C #{mongrel_conf}"
|
26
27
|
argv << "--user #{mongrel_user}" if mongrel_user
|
27
28
|
argv << "--group #{mongrel_group}" if mongrel_group
|
29
|
+
argv << "--prefix #{mongrel_prefix}" if mongrel_prefix
|
28
30
|
cmd = argv.join " "
|
29
31
|
send(run_method, cmd)
|
30
32
|
end
|
@@ -43,8 +45,8 @@ Capistrano.configuration(:must_exist).load do
|
|
43
45
|
variable to determine whether to use sudo or not. By default, :use_sudo is set to true.
|
44
46
|
DESC
|
45
47
|
task :restart_mongrel_cluster , :roles => :app do
|
46
|
-
|
47
|
-
|
48
|
+
set_mongrel_conf
|
49
|
+
send(run_method, "mongrel_rails cluster::restart -C #{mongrel_conf}")
|
48
50
|
end
|
49
51
|
|
50
52
|
desc <<-DESC
|
@@ -72,7 +74,7 @@ Capistrano.configuration(:must_exist).load do
|
|
72
74
|
end
|
73
75
|
|
74
76
|
def set_mongrel_conf
|
75
|
-
set :mongrel_conf, "/etc/mongrel_cluster/#{application}.
|
77
|
+
set :mongrel_conf, "/etc/mongrel_cluster/#{application}.yml" unless mongrel_conf
|
76
78
|
end
|
77
79
|
|
78
80
|
end
|
data/resources/mongrel_cluster
CHANGED
@@ -12,6 +12,13 @@
|
|
12
12
|
CONF_DIR=/etc/mongrel_cluster
|
13
13
|
RETVAL=0
|
14
14
|
|
15
|
+
|
16
|
+
# Gracefully exit if the controller is missing.
|
17
|
+
which mongrel_cluster_ctl >/dev/null || exit 0
|
18
|
+
|
19
|
+
# Go no further if config directory is missing.
|
20
|
+
[ -d "$CONF_DIR" ] || exit 0
|
21
|
+
|
15
22
|
case "$1" in
|
16
23
|
start)
|
17
24
|
mongrel_cluster_ctl start -c $CONF_DIR
|
metadata
CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.8.11
|
|
3
3
|
specification_version: 1
|
4
4
|
name: mongrel_cluster
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.2.
|
7
|
-
date: 2006-
|
6
|
+
version: 0.2.1
|
7
|
+
date: 2006-09-11 00:00:00 -07:00
|
8
8
|
summary: Mongrel plugin that provides commands and Capistrano tasks for managing multiple Mongrel processes.
|
9
9
|
require_paths:
|
10
10
|
- lib
|
@@ -34,11 +34,11 @@ files:
|
|
34
34
|
- Rakefile
|
35
35
|
- bin/mongrel_cluster_ctl
|
36
36
|
- lib/mongrel_cluster
|
37
|
-
- lib/mongrel_cluster/init.rb
|
38
37
|
- lib/mongrel_cluster/recipes.rb
|
38
|
+
- lib/mongrel_cluster/init.rb
|
39
39
|
- tools/rakehelp.rb
|
40
|
-
- resources/defaults.yaml
|
41
40
|
- resources/mongrel_cluster
|
41
|
+
- resources/defaults.yaml
|
42
42
|
test_files: []
|
43
43
|
|
44
44
|
rdoc_options: []
|
@@ -68,5 +68,5 @@ dependencies:
|
|
68
68
|
requirements:
|
69
69
|
- - ">="
|
70
70
|
- !ruby/object:Gem::Version
|
71
|
-
version: 0.3.13
|
71
|
+
version: 0.3.13.4
|
72
72
|
version:
|