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.
- #klass ⇒ Object
Class Attribute Details
.skip_commands ⇒ UnsortedSet (readonly)
Gets the set of commands to skip counting.
158 159 160 |
# File 'lib/middleware/database_logger.rb', line 158 def skip_commands @skip_commands end |
Class Method Details
.count ⇒ Integer
Gets the current count of Database commands executed.
162 163 164 |
# File 'lib/middleware/database_logger.rb', line 162 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.
199 200 201 202 203 204 |
# File 'lib/middleware/database_logger.rb', line 199 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.
176 177 178 |
# File 'lib/middleware/database_logger.rb', line 176 def increment @count.increment end |
.reset ⇒ Integer
Resets the command count to zero. This method is thread-safe.
169 170 171 |
# File 'lib/middleware/database_logger.rb', line 169 def reset @count.value = 0 end |
.skip_command?(command) ⇒ Boolean
180 181 182 |
# File 'lib/middleware/database_logger.rb', line 180 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.
220 221 222 223 |
# File 'lib/middleware/database_logger.rb', line 220 def call(command, _config) klass.increment unless klass.skip_command?(command) yield end |
#klass ⇒ Object
207 208 209 |
# File 'lib/middleware/database_logger.rb', line 207 def klass DatabaseCommandCounter end |