自作スクリプトによるRailsアプリの始め方
railsコマンドでひな形を作れるけど、そこからさらにSubversionにimportしたり、Capistranoをapplyしたりを毎回手動でやるのは面倒だよね、ということでスクリプトを書いた。
スクリプト実行中にリポジトリを作成する都合上、リポジトリはローカル決めうち。リモートのリポジトリを使うなら、sshを使ってリモートでsvnadmin createすればいいかな?
#!/bin/sh
if [ "$#" = 0 ]; then
echo "usage: create-rails.sh dir"
exit 1
fi
RAILS='rails'
RAILS_APP_DIR=$1
RAILS_APP_NAME=`basename $1`
SVN_TARGET=${HOME}/var/svn/repos/${RAILS_APP_NAME}
if [ -d ${SVN_TARGET} ]; then
echo "Error:"
echo " ${SVN_TARGET} already exists."
exit 1
fi
if [ -d ${RAILS_APP_DIR} ]; then
echo "Error:"
echo " ${RAILS_APP_DIR} already exists."
exit 1
fi
if [ ! -d `dirname ${RAILS_APP_DIR}` ]; then
mkdir -p `dirname ${RAILS_APP_DIR}`
fi
if [ ! -d `dirname ${SVN_TARGET}` ]; then
mkdir -p `dirname ${SVN_TARGET}`
fi
# Create Directories for "svn import"
mkdir -p ${RAILS_APP_DIR}/trunk
# Create Rails Application
cd ${RAILS_APP_DIR}/trunk
${RAILS} ${RAILS_APP_NAME}
cap -A ${RAILS_APP_NAME}
# Create Subversion Repository
svnadmin create --fs-type fsfs ${SVN_TARGET}
# Import
cd ../
svn import -m "import ${RAILS_APP_NAME}" . file://${SVN_TARGET}
# Remove imported directory
cd ../
rm -rf ${RAILS_APP_NAME}
# Checkout working copy
svn co file://${SVN_TARGET}/trunk/${RAILS_APP_NAME}
cd ${RAILS_APP_NAME}
# Remove log files
svn remove log/*
svn ci -m 'remove logfiles'
svn up
# Add ignore property for log files
svn propset svn:ignore '*.log' log/
svn ci -m 'ignore log/*.log'
svn up
# Rename database.yml
svn move config/database.yml config/database.example.yml
svn ci -m 'rename database.yml'
svn up
# Add ignore property for database.yml
svn propset svn:ignore 'database.yml' config/
svn ci -m 'ignore database.yml'
svn up
cp ./config/database.example.yml ./config/database.yml
cd ../これをrails-create.shという名前で保存して、ディレクトリを引数にして実行すればOK。
> rails-create.sh work/test