Module: DatabaseCommandCounter
- Defined in:
- lib/middleware/database_logger.rb
Overview
DatabaseCommandCounter is Valkey/RedisClient middleware.
This middleware counts the number of Database commands executed. It can be useful for performance monitoring and debugging, allowing you to track the volume of Database operations in your application.
Class Attribute Summary collapse
-
.skip_commands ⇒ UnsortedSet
readonly
Gets the set of commands to skip counting.
Class Method Summary collapse
-
.count ⇒ Integer
Gets the current count of Database commands executed.
-
.count_commands { ... } ⇒ Integer
Counts the number of Database commands executed within a block.
-
.increment ⇒ Integer
Increments the command count.
-
.reset ⇒ Integer
Resets the command count to zero.
- .skip_command?(command) ⇒ Boolean
Instance Method Summary collapse
-
#call(command, _config) ⇒ Object
Counts the Database command and delegates its execution.
- #call_once(command, _config) ⇒ Object
- #call_pipelined(commands, _config) ⇒ Object
- #klass ⇒ Object
Class Attribute Details
.skip_commands ⇒ UnsortedSet (readonly)
Gets the set of commands to skip counting.
216 217 218 |
# File 'lib/middleware/database_logger.rb', line 216 def skip_commands @skip_commands end |
Class Method Details
.count ⇒ Integer
Gets the current count of Database commands executed.
220 221 222 |
# File 'lib/middleware/database_logger.rb', line 220 def count @count.value end |
.count_commands { ... } ⇒ Integer
Counts the number of Database commands executed within a block.
This method captures the command count before and after executing the provided block, returning the difference. This is useful for measuring how many Database commands are executed by a specific operation.
257 258 259 260 261 262 |
# File 'lib/middleware/database_logger.rb', line 257 def count_commands start_count = count # Capture the current command count before execution yield # Execute the provided block end_count = count # Capture the command count after execution end_count - start_count # Return the difference (commands executed in block) end |
.increment ⇒ Integer
Increments the command count. This method is thread-safe.
234 235 236 |
# File 'lib/middleware/database_logger.rb', line 234 def increment @count.increment end |
.reset ⇒ Integer
Resets the command count to zero. This method is thread-safe.
227 228 229 |
# File 'lib/middleware/database_logger.rb', line 227 def reset @count.value = 0 end |
.skip_command?(command) ⇒ Boolean
238 239 240 |
# File 'lib/middleware/database_logger.rb', line 238 def skip_command?(command) skip_commands.include?(command.first.to_s.upcase) end |
Instance Method Details
#call(command, _config) ⇒ Object
Counts the Database command and delegates its execution.
This method is called for each Database command when the middleware is active. It increments the command count (unless the command is in the skip list) and then yields to execute the actual command.
278 279 280 281 |
# File 'lib/middleware/database_logger.rb', line 278 def call(command, _config) klass.increment unless klass.skip_command?(command) yield end |
#call_once(command, _config) ⇒ Object
291 292 293 294 |
# File 'lib/middleware/database_logger.rb', line 291 def call_once(command, _config) klass.increment unless klass.skip_command?(command) yield end |
#call_pipelined(commands, _config) ⇒ Object
283 284 285 286 287 288 289 |
# File 'lib/middleware/database_logger.rb', line 283 def call_pipelined(commands, _config) # Count all commands in the pipeline (except skipped ones) commands.each do |command| klass.increment unless klass.skip_command?(command) end yield end |
#klass ⇒ Object
265 266 267 |
# File 'lib/middleware/database_logger.rb', line 265 def klass DatabaseCommandCounter end |