Report abuse


			
#!/bin/sh
#
#
PATH="/bin:/usr/bin:/usr/local/bin"

APP_BASE_DIR="/path/to/u/apps"
APPS="`ls ${APP_BASE_DIR}/*/Rakefile`"
USER="mongrel"

##
# Subroutines.
run_all_mongrels() {
  type="${1}"
  errors="${2}"
  silent="${3}"
  echo "INFO: action - ${type} all RoR applications."
  for i in ${APPS} ; do
    dir="`echo $i |sed 's/Rakefile$//'`"
    cd "${dir}"; su "${USER}" -c "rake ${silent} util:mongrel_init:${type} 2> ${errors}"
  done
}

run_one_mongrel() {
  type="${1}"
  app="${2}"
  echo "INFO: action - ${type} ${2}."
  cd "${APP_BASE_DIR}/${app}"
  cd "${dir}"; su "${USER}" -c "rake -s util:mongrel_init:${type}"
}

##
# Main.
case "${1}" in
  start)
    if [ -z "${2}" ]; then
      run_all_mongrels "start" "/var/tmp/`basename $0`.errors"
    else
      run_one_mongrel "start" "${2}"
    fi
  ;;

  stop)
    if [ -z "${2}" ]; then
      run_all_mongrels "stop" "/var/tmp/`basename $0`.errors"
    else
      run_one_mongrel "stop" "${2}"
    fi
  ;;

  list)
    run_all_mongrels "name" "/dev/null" "-s"
  ;;

  *)
    echo "Usage: mongrel_cluster { start { APPLICATION } | stop { APPLICATION } | list }"
    exit 0
  ;;

esac


exit 0