query_counter 0.2.1 → 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. checksums.yaml +5 -5
  2. data/lib/query_counter.rb +12 -2
  3. metadata +3 -4
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: fb6de4766dc8b0751b1e8cd450a4138517a0f1f0
4
- data.tar.gz: c59e4b872729e6d65b996c99591eebbb09b7e5e1
2
+ SHA256:
3
+ metadata.gz: 287f722b0315a6c58aaf972b350675f5109b00e86c74bf77066f77e1dc206946
4
+ data.tar.gz: 8611d58903ea5f9f4157ddba804d28fb72702408bbcfbaa9b004a49c80adfe07
5
5
  SHA512:
6
- metadata.gz: 5391b34427c25b7cc4f2c099fa2bf26f40c930a0dfb3860ffd9407b1bb6d09c412145d6ed78fbe948594d8ab9aae4e6694cb3154b804c698fdf2ae19540a8ec7
7
- data.tar.gz: 8c01c0ddf20dda86042b412c06deb6d8da5f3a072f53d2a2304f7a691718b04463c1fdd583f929a0296b2d1b37f9072421321446523935906b6af61e354c57cf
6
+ metadata.gz: a45341c89a30c7e65fe7d31c8a43d921cb9ae33f9b1f261cc2278cd5bd7ac74fff16bc1f3e8f66ebd99e621af2dec8bb5348514550d7b5ff1e16ab879e471c70
7
+ data.tar.gz: dd6e67759841de70a6acb4b7980da38081cb25b6afe6d8e6bf7f0a550c3d75e7555aa3157c86aaf2ab585043a30566498154e84fde42197f361b6f04fb0bd1c6
data/lib/query_counter.rb CHANGED
@@ -5,6 +5,11 @@ module QueryCounter
5
5
  autoload :RequestHelper, 'query_counter/request_helper'
6
6
  autoload :Stat, 'query_counter/stat'
7
7
 
8
+ @@callbacks = {}
9
+ def self.callbacks
10
+ @@callbacks
11
+ end
12
+
8
13
  def self.global_collector
9
14
  ::QueryCounter::Global.instance
10
15
  end
@@ -60,14 +65,16 @@ module QueryCounter
60
65
  current_collector.count(resource)
61
66
  end
62
67
 
63
- def self.auto_subscribe!(resource, event_name)
68
+ def self.auto_subscribe!(resource, event_name, &block)
64
69
  require 'active_support/notifications'
65
70
  ActiveSupport::Notifications.subscribe(event_name) do |*args|
66
71
  ::QueryCounter.record_event(resource, ActiveSupport::Notifications::Event.new(*args))
67
72
  end
68
73
  end
69
74
 
70
- def self.auto_instrument!(resource, kls, method_name)
75
+ def self.auto_instrument!(resource, kls, method_name, &block)
76
+ callback_name = "#{resource}.#{method_name}"
77
+
71
78
  method_name = method_name.to_s
72
79
  if method_name =~ /^(.*?)([!\?])$/
73
80
  method_name = $1
@@ -76,10 +83,13 @@ module QueryCounter
76
83
  punctuation = ''
77
84
  end
78
85
 
86
+ callbacks[callback_name] = block if block
87
+
79
88
  original_method_name_with_alias = "#{method_name}_without_instrumentation#{punctuation}"
80
89
  new_method_name = "#{method_name}_with_instrumentation#{punctuation}"
81
90
  kls.class_eval <<STR
82
91
  def #{new_method_name}(*args)
92
+ QueryCounter.callbacks[#{callback_name.inspect}].call(args) if QueryCounter.callbacks.has_key?(#{callback_name})
83
93
  started_at = Time.now
84
94
  result = #{original_method_name_with_alias}(*args)
85
95
  ::QueryCounter.record(#{resource.inspect}, (Time.now - started_at) * 1_000.0)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: query_counter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Doug Youch
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-01-14 00:00:00.000000000 Z
11
+ date: 2019-06-12 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Used for monitoring number of external calls
14
14
  email: dougyouch@gmail.com
@@ -40,8 +40,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
40
40
  - !ruby/object:Gem::Version
41
41
  version: '0'
42
42
  requirements: []
43
- rubyforge_project:
44
- rubygems_version: 2.5.2.3
43
+ rubygems_version: 3.0.3
45
44
  signing_key:
46
45
  specification_version: 4
47
46
  summary: Count requests to external systems