git cloneは git init、リモートリポジトリの各種設定(※)、git pullを一気に実行
set :application, 'finalge_sample_app' set :repo_url, 'git@github.com:mumoshu/finagle_sample_app.git' task :update do run_locally do application = fetch :application if test "[ -d #{application} ]" execute "cd #{application}; git pull" end else execute "git clone #{fetch :repo_url} #{application}" end end end
task :archive => :update do run_locally do sbt_output = capture "cd #{fetch :application}; sbt pack-archive" sbt_output_without_escape_sequences = sbt_output.lines.map { |line| line.gsub(/\e\[\d{1,2}m/, '')}.join archive_relative_path = sbt_output_without_escape_sequences.match(/\[info\] Generating (?<archive_path>.+\.tar\.gz)\s*$/)[:archive_path] archive_name = archive_relative_path.match(/(?<archive_name>[^\/]+\.tar\.gz)$/)[:archive_name] archive_absolute_path = File.join(capture("cd #{fetch(:application)}; pwd").chomp, archive_relative_path) info archive_absolute_path info archive_name set :archive_absolute_path, archive_absolute_path set :archive_name, archive_name end end
task :deploy => :archive do archive_path = fetch :archive_absolute_path archive_name = fetch :archive_name release_path = File.join(fetch(:deploy_to), fetch(:application)) on roles(:web) do unless test "[ -d #{release_path} ]" execute "mkdir -p #{release_path}" end upload! archive_path, release_path execute "cd #{release_path}; tar -zxvf #{archive_name}" ここでアプリケーションの起動 end end
尋常じゃねー 差がありすぎて、追い付ける気が全くしねー
だいたいscalaなんて、全然やりこんでねーぞ。。。
capistranoの理解は若干進んだが、後退している気しかしねー