やる気を維持させるRailsスケルトン準備コード
以下の URL を参考にやるルーティンワークでやる気が削がれないための基本的な作業開始スクリプトをここにおいてみました。Ruby版です。
http://un-q.net/2006/09/railssubversion.html
#!/usr/bin/env ruby def usage STDERR.print <<EOF usage: #{$0} app_name repository example: snv_rails wawawa svn+ssh://hostname/path/ EOF exit 1 end # ファイル又はディレクトリを削除する特異メソッドをDirクラスに追加 class << Dir def rmdir_forced(delthem) if FileTest.directory?(delthem) then # ディレクトリかどうかを判別 Dir.foreach( delthem ) do |file| # 中身を一覧 next if /^\.+$/ =~ file # 上位ディレクトリと自身を対象から外す rmdir_forced( delthem.sub(/\/+$/,"") + "/" + file ) end Dir.rmdir(delthem) rescue "" # 中身が空になったディレクトリを削除 else File.delete(delthem) # ディレクトリでなければ削除 end end end rails_cmd = '/var/lib/gems/1.8/bin/rails' svn_cmd ='/usr/bin/svn' rails_app_name = ARGV.shift repos = ARGV.shift svn_target = "#{repos}/#{rails_app_name}.rails" begin # 1. ディレクトリを作成して移動 # mkdir とりあえず適当な名前; cd とりあえず適当な名前 Dir::mkdir(rails_app_name) if !FileTest::exist?(rails_app_name) Dir::chdir(rails_app_name) # 2. trunk tag branchesを作成 # mkdir trunk tag branches Dir::mkdir('trunk') if !FileTest::exist?('trunk') Dir::mkdir('tag') if !FileTest::exist?('tag') Dir::mkdir('branches') if !FileTest::exist?('branches') # 3. この構造をsvnにimport # svn import . svn+ssh://svnurl/リポジトリ名・・・ -m "initial" system("#{svn_cmd} import . #{svn_target} -m 'initial'") # 4. 一旦ディレクトリから離れて削除 # cd ..;rm -rf とりあえず適当な名前 Dir::chdir('..') Dir::rmdir_forced(rails_app_name) # 5. プロジェクト作成してディレクトリに入る # rails project_name; cd project_name system("#{rails_cmd} #{rails_app_name}") Dir::chdir(rails_app_name) # 6. トランクにimport する # svn import . svn+ssh://svnrul/リポジトリ名/trunk -m "import" system("#{svn_cmd} import . #{svn_target}/trunk/ -m 'import'") # 7. 作業ディレクトリに移動してチェックアウト # cd 作業ディレクトリ; svn co svn+ssh://svnurl/リポジトリ/trunk/ . # 今回は作業ディレクトリは前のを継続 system("#{svn_cmd} co #{svn_target}/trunk/ .") # 8. ログファイル削除 # svn ci -m "remove log file" # svn propset svn:ignore "*.log" log/ # svn ci -m "add ignore log/*" system("#{svn_cmd} ci -m 'remove log file'") system("#{svn_cmd} propset svn:ignore '*.log' log/") system("#{svn_cmd} ci -m 'add ignore log/*'") # 9. tmp以下を無視ファイルに指定 # svn propset svn:ignore "*" tmp/sessions tmp/cache tmp/sockets # svn ci -m "add ignore tmp/" system("#{svn_cmd} propset svn:ignore '*' tmp/sessions tmp/cache tmp/sockets") system("#{svn_cmd} ci -m 'add ignore tmp/'") # 10. database.yml を database.yml.exampleへ # svn move config/database.yml config/database.yml.example # svn ci -m "database.yml -> database.yml.example" # 今回省略 # 11. database.ymlを無視ファイルに指定 # svn propset svn:ignore "database.yml" config/ # svn ci -m "ignore database.yml" # cp config/database.yml.example config/database.yml # 今回省略 rescue puts "Error occured." else ensure end exit 0