class TinyMysql

Constants

VERSION

Attributes

database[R]
defaults_extra_file[R]
host[R]
mysql_command[R]
port[R]
username[R]

Public Class Methods

new(options = {}) click to toggle source
# File lib/tiny_mysql.rb, line 12
def initialize(options = {})
  @mysql_command = options[:mysql_command] || 'mysql'
  @defaults_extra_file = options[:defaults_extra_file]
  @host = options[:host] || 'localhost' unless @defaults_extra_file
  @port = options[:port]
  @username = options[:username] || 'root' unless @defaults_extra_file
  @password = options[:password]
  @database = options[:database]
end

Public Instance Methods

query(sql) click to toggle source
# File lib/tiny_mysql.rb, line 22
def query(sql)
  out, err, status = Open3.capture3(*cmd_with_args, :stdin_data => sql)
  status.success? or raise err
  parse(out)
end

Private Instance Methods

cmd_with_args() click to toggle source
# File lib/tiny_mysql.rb, line 30
def cmd_with_args
  list = []
  list << {'MYSQL_PWD' => @password} if @password
  list << @mysql_command
  list << "--defaults-extra-file=#{@defaults_extra_file}" if @defaults_extra_file
  list << '-h' << @host if @host
  list << '-P' << @port if @port
  list << '-u' << @username if @username
  list << @database if @database
  list
end
parse(out) click to toggle source
# File lib/tiny_mysql.rb, line 42
def parse(out)
  out = out.split("\n")
  columns = (out.shift || '').split("\t")

  out.map do |row|
    Hash[columns.zip(row.split("\t"))]
  end
end