namespace :mongrel do namespace :cluster do namespace :centos do desc <<-DESC Create mongrel cluster.
mongrel_application
Name of mongrel application
@set :mongrel_application, "mongrel_cluster_\#{application}"@
mongrel_size
Number of mongrels
@set :mongrel_size, 3@
mongrel_port
Starting port for mongrels. If there are 3 mongrels with port 9000, then instances will be at 9000, 9001, and 9002
@set :mongrel_port, 9000@
mongrel_config_dir
Directory for mongrel config.
Defaults to @\#{shared_path}/config/mongrel@
mongrel_pid_dir
Directory for mongrel pids
Defaults to @\#{shared_path}/pids@
mongrel_config_script
Config script to load with mongrel
Defaults to @nil@
@set :mongrel_config_script, "config/mongrel_handler.rb"@
mongrel_cluster_command
Mongrel cluster command.
Defaults to @mongrel_cluster_ctl@
mongrel_initscript_name
Mongrel initscript name.
Defaults to @mongrel_cluster_\#{application}@
mongrel_config_options
Config options appended to cluster yml.
Defaults to @{}@
"Source":#{link_to_source(__FILE__)} DESC task :setup do # Settings fetch(:mongrel_size) fetch(:mongrel_port) fetch_or_default(:mongrel_config_dir, "#{shared_path}/config/mongrel") fetch_or_default(:mongrel_pid_dir, "#{shared_path}/pids") fetch_or_default(:mongrel_config_script, nil) fetch_or_default(:mongrel_cluster_command, "mongrel_cluster_ctl") fetch_or_default(:mongrel_initscript_name, "mongrel_cluster_#{application}") fetch_or_default(:mongrel_config_options, {}) unless mongrel_config_script.blank? mongrel_config_options["config_script"] = mongrel_config_script end run "mkdir -p #{mongrel_config_dir}" set :mongrel_pid_path, "#{mongrel_pid_dir}/#{mongrel_application}.pid" set :mongrel_log_path, "log/#{mongrel_application}.log" put template.load("mongrel/mongrel_cluster.yml.erb"), "#{mongrel_config_dir}/mongrel_cluster.yml" initscript end desc "Mongrel cluster setup initscript for application" task :initscript do fetch_or_default(:mongrel_config_dir, "#{shared_path}/config/mongrel") fetch_or_default(:mongrel_pid_dir, "#{shared_path}/pids") fetch_or_default(:mongrel_cluster_command, "mongrel_cluster_ctl") fetch_or_default(:mongrel_initscript_name, "mongrel_cluster_#{application}") utils.install_template("mongrel/mongrel_cluster.initd.centos.erb", "/etc/init.d/#{mongrel_initscript_name}") run_via "/sbin/chkconfig --level 345 #{mongrel_initscript_name} on" end end end end