class Scheman::Rails::Applier

Constants

DEFAULT_SCHEMA_MESSAGE

Public Class Methods

call() click to toggle source
# File lib/scheman/rails/commands/applier.rb, line 6
def self.call
  new.call
end

Public Instance Methods

call() click to toggle source
# File lib/scheman/rails/commands/applier.rb, line 10
def call
  execute_sql
  create_schema_file
end

Private Instance Methods

command() click to toggle source
# File lib/scheman/rails/commands/applier.rb, line 69
def command
  "mysql " + command_options.join(" ")
end
command_options() click to toggle source
# File lib/scheman/rails/commands/applier.rb, line 77
def command_options
  result = []
  result.concat([database]) if has_database?
  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
create_schema_file() click to toggle source
# File lib/scheman/rails/commands/applier.rb, line 25
def create_schema_file
  unless after_schema_pathname.exist?
    after_schema_pathname.open("w") do |io|
      io.puts DEFAULT_SCHEMA_MESSAGE
    end
  end
end
diff() click to toggle source
# File lib/scheman/rails/commands/applier.rb, line 61
def diff
  dumper.result
end
dumper() click to toggle source
# File lib/scheman/rails/commands/applier.rb, line 65
def dumper
  @dumper ||= Scheman::Rails::Dumper.new
end
error_message() click to toggle source
# File lib/scheman/rails/commands/applier.rb, line 57
def error_message
  result[1]
end
execute_sql() click to toggle source
# File lib/scheman/rails/commands/applier.rb, line 17
def execute_sql
  if has_error?
    abort(error_message)
  elsif executed_sql.present?
    puts executed_sql
  end
end
executed_sql() click to toggle source
# File lib/scheman/rails/commands/applier.rb, line 33
def executed_sql
  @executed_sql ||= begin
    result = []
    unless has_database?
      result << create_database_statement
      result << use_database_steatement
    end
    result << diff
    result.join("\n\n")
  end
end
has_database?() click to toggle source
# File lib/scheman/rails/commands/applier.rb, line 73
def has_database?
  !dumper.has_unknown_database_error?
end
has_error?() click to toggle source
# File lib/scheman/rails/commands/applier.rb, line 53
def has_error?
  result[2] != 0
end
result() click to toggle source
# File lib/scheman/rails/commands/applier.rb, line 45
def result
  @result ||= Open3.capture3(command, stdin_data: executed_sql)
end
result_message() click to toggle source
# File lib/scheman/rails/commands/applier.rb, line 49
def result_message
  result[0]
end
use_database_steatement() click to toggle source
# File lib/scheman/rails/commands/applier.rb, line 88
def use_database_steatement
  "USE `#{database}`;"
end