#!/usr/bin/env ruby
require 'pathname'
require 'fileutils'
require 'timeout'
include FileUtils

# path to your application root.
APP_ROOT = Pathname.new File.expand_path('../../', __FILE__)

def system!(*args)
  system(*args) || abort("\n== Command #{args} failed ==")
end

chdir APP_ROOT do
  begin
    Timeout.timeout(30) do
      puts "\n== Updating database =="
      system 'bin/rails db:migrate'
    end
  rescue
    puts "\n== Database maintenance timed out (likely failed to acquire advisory lock) ==\n"
  end

  puts "\n== Restarting application server =="
  system! 'bundle exec puma'
end
