Class: Dbwatcher::SqlLogger
- Inherits:
-
Object
- Object
- Dbwatcher::SqlLogger
- Includes:
- Singleton
- Defined in:
- lib/dbwatcher/sql_logger.rb
Instance Attribute Summary collapse
-
#queries ⇒ Object
readonly
Returns the value of attribute queries.
Instance Method Summary collapse
- #clear_queries ⇒ Object
- #create_query_record(sql, name, binds, duration) ⇒ Object
-
#initialize ⇒ SqlLogger
constructor
A new instance of SqlLogger.
- #log_query(sql, name, binds, _type_casted_binds, duration) ⇒ Object
- #store_query(query) ⇒ Object
Constructor Details
#initialize ⇒ SqlLogger
Returns a new instance of SqlLogger.
9 10 11 12 13 |
# File 'lib/dbwatcher/sql_logger.rb', line 9 def initialize @queries = [] @mutex = Mutex.new setup_subscriber if Dbwatcher.configuration.track_queries end |
Instance Attribute Details
#queries ⇒ Object (readonly)
Returns the value of attribute queries.
7 8 9 |
# File 'lib/dbwatcher/sql_logger.rb', line 7 def queries @queries end |
Instance Method Details
#clear_queries ⇒ Object
44 45 46 47 48 |
# File 'lib/dbwatcher/sql_logger.rb', line 44 def clear_queries @mutex.synchronize do @queries.clear end end |
#create_query_record(sql, name, binds, duration) ⇒ Object
24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/dbwatcher/sql_logger.rb', line 24 def create_query_record(sql, name, binds, duration) { id: SecureRandom.uuid, sql: sql, name: name, binds: binds, duration: duration, timestamp: Time.current, session_id: current_session_id, backtrace: filtered_backtrace, tables: extract_tables(sql), operation: extract_operation(sql) } end |
#log_query(sql, name, binds, _type_casted_binds, duration) ⇒ Object
15 16 17 18 19 20 21 22 |
# File 'lib/dbwatcher/sql_logger.rb', line 15 def log_query(sql, name, binds, _type_casted_binds, duration) return unless Dbwatcher.configuration.track_queries @mutex.synchronize do query = create_query_record(sql, name, binds, duration) store_query(query) end end |