Ruby を Rails アプリ開発だけに使うのはもったいない。刺身タンポポ作業は Ruby でスクリプト書いてどんどん自動化しないと。
というわけで、Ruby で Subversion のリポジトリを更新して、プロジェクトをビルドする作業を自動化してみた。Rake ファイルだけど。
# coding: utf-8 # # リポジトリを管理するための Rakefile。 # リポジトリの更新とビルドを自動化。 # 使い方: # rake -f ./manage_repository.rb all:update all:build # MSBUILD = '"C:/windows/Microsoft.NET/Framework/v4.0.30319/MSBuild.exe"' BASE_DIR = "C:/Users/<username>/Documents/Visual Studio 2010/Projects" # ビルド対象のプロジェクト情報 PROJECTS = [ {:name => "foo", :dir_name => "Foo", :sln_name => "Foo.sln"}, {:name => "bar", :dir_name => "Bar", :sln_name => "Bar.sln", :platform => "Mixed Platforms"}, ] # TortoiseSVN をコマンドラインで実行してリポジトリを更新 def svn_update(path) sh "TortoiseProc.exe /command:update /path:\"#{path}\" /closeonend:1" end # プラットフォームを指定して MSBuild を実行 def msbuild(path, platform) platform ||= "Any CPU" sh "#{MSBUILD} \"#{path}\" /p:Configuration=Release /p:Platform=\"#{platform}\" /t:Rebuild" end PROJECTS.each do |info| namespace info[:name] do project_dir = File.join(BASE_DIR, info[:dir_name]) desc "update #{info[:name]} repository" task :update do svn_update project_dir end desc "build #{info[:name]}" task :build do msbuild File.join(project_dir, info[:sln_name]), info[:platform] end end end namespace :all do desc "update all repositories" task :update => PROJECTS.map{|info| "#{info[:name]}:update"} desc "build all repositories" task :build => PROJECTS.map{|info| "#{info[:name]}:build"} end
これをログイン後に実行するよう、Windows のタスクスケジューラーに登録してみた。
Tortoise Proc を使っているのは、会社で許可されてる Subversion クライアントが Tortoise SVN だけだから。自動で閉じるようにしているとはいえ、ダイアログが出るのがうざったいんだけど、仕方ない。