Sha256: 98674e6d29a47762e905bcfec0577d392f839c4b98bdbc3aa2d6c5fbc61115a4
Contents?: true
Size: 1.45 KB
Versions: 6
Compression:
Stored size: 1.45 KB
Contents
require 'sqreen/ecosystem/module_api' require 'sqreen/ecosystem/module_api/instrumentation' require 'sqreen/ecosystem/module_api/message_producer' require 'sqreen/ecosystem/databases/database_connection_data' module Sqreen module Ecosystem module Databases class Postgres include ModuleApi::Instrumentation include ModuleApi::MessageProducer def setup advice = wrap_for_interest(DatabaseConnectionData, &method(:after_advice)) instrument 'PG::Connection#initialize', after: advice end private # instance is of type +PG::Connection+ # > c = PG::Connection.new(host: '172.17.0.2', password: 'mysecretpassword', user: 'postgres') # => #<PG::Connection:0x000055b44d077d10> # > %i{host port user db}.map { |m| c.send m } # => ["172.17.0.2", 5432, "postgres", "postgres"] def after_advice(call, _ball) conn = call.instance # build & submit signal signal = DatabaseConnectionData.new(transport: :postgres) host = conn.host if host if host.include?('/') signal.unix_socket = host signal.host = 'localhost' signal.ip = '::1' else signal.host = host end end signal.port = conn.port signal.username = conn.user signal.db = conn.db signal end end end end end
Version data entries
6 entries across 6 versions & 1 rubygems