class Scheman::Rails::Dumper

Public Instance Methods

call() click to toggle source
# File lib/scheman/rails/commands/dumper.rb, line 4
def call
  case
  when has_unexpected_dump_error?
    abort(dump_error_message)
  when str = result.presence
    puts str
  end
end
diff() click to toggle source
# File lib/scheman/rails/commands/dumper.rb, line 17
def diff
  @diff ||= Scheman::Diff.new(
    before: before_schema,
    after: after_schema,
    type: schema_type,
  )
end
has_unknown_database_error?() click to toggle source
# File lib/scheman/rails/commands/dumper.rb, line 13
def has_unknown_database_error?
  has_dump_error? && /Unknown database/ === dump_error_message
end
result() click to toggle source
# File lib/scheman/rails/commands/dumper.rb, line 25
def result
  @result ||= statements.join("\n\n").rstrip
end

Private Instance Methods

additional_command_options() click to toggle source
# File lib/scheman/rails/commands/dumper.rb, line 90
def additional_command_options
  result = []
  result.concat(["--default-character-set", encoding]) if encoding
  result.concat(["--host", host]) if host
  result.concat(["--password", password]) if password
  result.concat(["--port", port]) if port
  result.concat(["--socket", socket]) if socket
  result.concat(["--user", username]) if username
  result
end
after_schema() click to toggle source
# File lib/scheman/rails/commands/dumper.rb, line 66
def after_schema
  if after_schema_pathname.exist?
    after_schema_pathname.read
  else
    ""
  end
end
before_schema() click to toggle source
# File lib/scheman/rails/commands/dumper.rb, line 58
def before_schema
  if has_unknown_database_error?
    ""
  else
    dump_result
  end
end
command() click to toggle source
# File lib/scheman/rails/commands/dumper.rb, line 74
def command
  "mysqldump " + command_options.join(" ")
end
command_options() click to toggle source
# File lib/scheman/rails/commands/dumper.rb, line 78
def command_options
  default_command_options + additional_command_options
end
default_command_options() click to toggle source
# File lib/scheman/rails/commands/dumper.rb, line 82
def default_command_options
  [
    database,
    "--compact",
    "--no-data",
  ]
end
dump() click to toggle source
# File lib/scheman/rails/commands/dumper.rb, line 38
def dump
  @dump ||= Open3.capture3(command)
end
dump_error_message() click to toggle source
# File lib/scheman/rails/commands/dumper.rb, line 50
def dump_error_message
  dump[1]
end
dump_result() click to toggle source
# File lib/scheman/rails/commands/dumper.rb, line 42
def dump_result
  dump[0]
end
has_dump_error?() click to toggle source
# File lib/scheman/rails/commands/dumper.rb, line 46
def has_dump_error?
  dump[2] != 0
end
has_unexpected_dump_error?() click to toggle source
# File lib/scheman/rails/commands/dumper.rb, line 54
def has_unexpected_dump_error?
  has_dump_error? && !has_unknown_database_error?
end
statements() click to toggle source
# File lib/scheman/rails/commands/dumper.rb, line 31
def statements
  result = []
  result << create_database_statement if has_unknown_database_error?
  result << diff
  result
end