class PerconaMigrations::Runners::Percona

Constants

COMMAND

Public Class Methods

available?() click to toggle source
# File lib/percona_migrations/runners/percona.rb, line 6
def self.available?
  !percona_command.empty?
end
percona_command() click to toggle source
# File lib/percona_migrations/runners/percona.rb, line 10
def self.percona_command
  @percona_command ||= %x(which #{COMMAND}).chop
end

Public Instance Methods

run() click to toggle source
# File lib/percona_migrations/runners/percona.rb, line 14
def run
  options = [
    "--alter '#{@commands.join(', ')}'",
    "-h #{database_config['host']}",
    "-P #{database_config['port']}",
    "-u #{database_config['username']}",
    "D=#{database_config['database']},t=#{@table_name}"
  ]

  password = database_config['password']
  if password && !password.empty?
    options << "-p $PASSWORD"
  end

  run_command(options.join(' '), { 'PASSWORD' => password })
end

Private Instance Methods

database_config() click to toggle source
# File lib/percona_migrations/runners/percona.rb, line 33
def database_config
  PerconaMigrations.database_config
end
run_command(options, env_vars = {}) click to toggle source
# File lib/percona_migrations/runners/percona.rb, line 37
def run_command(options, env_vars = {})
  %w(dry-run execute).each do |mode|
    cmd = "#{self.class.percona_command} #{options} --#{mode}"

    log "Running percona command: \"#{cmd}\""

    unless system(env_vars, cmd)
      raise "Percona command failed: #{$?}"
    end
  end
end