class Sqreen::Ecosystem::Databases::Mysql

Public Instance Methods

setup() click to toggle source
# File lib/sqreen/ecosystem/databases/mysql.rb, line 19
def setup
  advice = wrap_for_interest(DatabaseConnectionData, &method(:after_advice))
  instrument 'Mysql2::Client#connect', after: advice
end

Private Instance Methods

after_advice(call, _ball) click to toggle source

instance is of type Mysql2::Client VALUE rb_mysql_connect(VALUE self, VALUE user, VALUE pass, VALUE host, VALUE port, VALUE database,

VALUE socket, VALUE flags, VALUE conn_attrs) {

@param [Sqreen::Graft::CallbackCall]

# File lib/sqreen/ecosystem/databases/mysql.rb, line 30
def after_advice(call, _ball)
  args = call.args

  # build & submit signal
  signal = DatabaseConnectionData.new(transport: :mysql)

  user = args[0]
  host = args[2]
  port = args[3]
  db = args[4]
  socket = args[5]

  if socket && !socket.empty?
    signal.unix_socket = socket
    signal.host = 'localhost'
    signal.ip = '::1'
  else
    signal.host = host
  end

  signal.port = port if port != 0
  signal.username = user
  signal.db = db

  signal
end