自作スクリプトによる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