From 8d16271150bb7be3a04e282fb885a2b2f15d0d9c Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sun, 8 Jan 2023 15:13:03 +0100 Subject: [PATCH] Make run resilient to same version having already been run --- lib/tasks/mrsk/app.rake | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/lib/tasks/mrsk/app.rake b/lib/tasks/mrsk/app.rake index 3633aed6..1fb046fd 100644 --- a/lib/tasks/mrsk/app.rake +++ b/lib/tasks/mrsk/app.rake @@ -17,9 +17,20 @@ namespace :mrsk do on(MRSK_CONFIG.servers) { execute app.pull } end - desc "Run app on servers" + desc "Run app on servers (or start them if they've already been run)" task :run do - on(MRSK_CONFIG.servers) { execute app.run } + on(MRSK_CONFIG.servers) do |host| + begin + execute app.run + rescue SSHKit::Command::Failed => e + if e.message =~ /already in use/ + puts "Container with same version already deployed on #{host}, starting that instead" + execute app.start, host: host + else + raise + end + end + end end desc "Start existing app on servers"