class RdsDbBackup::Shell

Public Instance Methods

concat(string) click to toggle source
# File lib/rds_db_backup/shell.rb, line 37
def concat(string)
  config.logger.info "[#{time}]\n#{string}"
end
pwd(dir) { || ... } click to toggle source
# File lib/rds_db_backup/shell.rb, line 7
def pwd(dir, &block)
  old_pwd = @pwd.nil? ? nil : @pwd.dup
  @pwd = dir
  yield
  @pwd = old_pwd
end
run(command, params = {}) click to toggle source
# File lib/rds_db_backup/shell.rb, line 14
def run(command, params = {})
  pwd = params[:pwd] || @pwd || ENV.fetch('PWD')
  env_variables = build_env_variables(params)
  command += ' 2>&1'

  concat [env_variables, command, "\n"].join(' ')

  Open3.popen3(command, chdir: pwd) do |i,o,e,t|
    result = o.read.chomp
    process = t.value

    concat result
    fail(command, process.exitstatus) unless process.success?
    result
  end
end
run_with_clean_env(command, params = {}) click to toggle source
# File lib/rds_db_backup/shell.rb, line 31
def run_with_clean_env(command, params = {})
  Bundler.with_clean_env do
    run(command, params)
  end
end

Private Instance Methods

build_env_variables(params) click to toggle source
# File lib/rds_db_backup/shell.rb, line 43
def build_env_variables(params)
  params.delete(:pwd)
  params.to_a.map { |element| element.join('=') }.join(' ')
end
fail(command, code) click to toggle source
# File lib/rds_db_backup/shell.rb, line 48
def fail(command, code)
  concat "Command failed with code '#{code}'"
end
time() click to toggle source
# File lib/rds_db_backup/shell.rb, line 52
def time
  Time.now.to_datetime
end