module PgSync::Utils

Constants

COLOR_CODES

Public Instance Methods

colorize(message, color) click to toggle source
# File lib/pgsync/utils.rb, line 14
def colorize(message, color)
  if output.tty?
    "\e[#{COLOR_CODES[color]}m#{message}\e[0m"
  else
    message
  end
end
confirm_tables_exist(data_source, tasks, description) click to toggle source
# File lib/pgsync/utils.rb, line 38
def confirm_tables_exist(data_source, tasks, description)
  tasks.map(&:table).each do |table|
    unless data_source.table_exists?(table)
      raise Error, "Table not found in #{description}: #{table}"
    end
  end
end
db_config_file(db) click to toggle source
# File lib/pgsync/utils.rb, line 34
def db_config_file(db)
  ".pgsync-#{db}.yml"
end
deprecated(message) click to toggle source
# File lib/pgsync/utils.rb, line 26
def deprecated(message)
  warning "[DEPRECATED] #{message}"
end
escape(value) click to toggle source
# File lib/pgsync/utils.rb, line 74
def escape(value)
  if value.is_a?(String)
    "'#{quote_string(value)}'"
  else
    value
  end
end
first_schema() click to toggle source
# File lib/pgsync/utils.rb, line 46
def first_schema
  @first_schema ||= source.search_path.find { |sp| sp != "pg_catalog" }
end
friendly_name(table) click to toggle source
# File lib/pgsync/utils.rb, line 54
def friendly_name(table)
  if table.schema == first_schema
    table.name
  else
    table.full_name
  end
end
log(message = nil) click to toggle source
# File lib/pgsync/utils.rb, line 10
def log(message = nil)
  output.puts message
end
monotonic_time() click to toggle source
# File lib/pgsync/utils.rb, line 87
def monotonic_time
  Process.clock_gettime(Process::CLOCK_MONOTONIC)
end
output() click to toggle source
# File lib/pgsync/utils.rb, line 30
def output
  $stderr
end
quote_ident(value) click to toggle source
# File lib/pgsync/utils.rb, line 70
def quote_ident(value)
  PG::Connection.quote_ident(value)
end
quote_ident_full(ident) click to toggle source
# File lib/pgsync/utils.rb, line 62
def quote_ident_full(ident)
  if ident.is_a?(Table) || ident.is_a?(Sequence)
    [quote_ident(ident.schema), quote_ident(ident.name)].join(".")
  else # temp table names are strings
    quote_ident(ident)
  end
end
quote_string(s) click to toggle source

activerecord

# File lib/pgsync/utils.rb, line 83
def quote_string(s)
  s.gsub(/\\/, '\&\&').gsub(/'/, "''")
end
task_name(task) click to toggle source
# File lib/pgsync/utils.rb, line 50
def task_name(task)
  friendly_name(task.table)
end
warning(message) click to toggle source
# File lib/pgsync/utils.rb, line 22
def warning(message)
  log colorize(message, :yellow)
end