glimpse-mysql2 1.0.0 → 1.1.0

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.
@@ -0,0 +1,7 @@
1
+ # 1.0.0
2
+
3
+ - Initial release.
4
+
5
+ # 1.1.0
6
+
7
+ - Query count and Query time are now threadsafe.
@@ -17,5 +17,7 @@ Gem::Specification.new do |gem|
17
17
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
18
18
  gem.require_paths = ['lib']
19
19
 
20
+ gem.add_dependency 'glimpse'
20
21
  gem.add_dependency 'mysql2'
22
+ gem.add_dependency 'atomic', '>= 1.0.0'
21
23
  end
@@ -1,5 +1,5 @@
1
1
  module Glimpse
2
2
  module Mysql2
3
- VERSION = '1.0.0'
3
+ VERSION = '1.1.0'
4
4
  end
5
5
  end
@@ -1,19 +1,21 @@
1
1
  require 'mysql2'
2
+ require 'atomic'
2
3
 
3
4
  # Instrument SQL time
4
5
  class Mysql2::Client
5
6
  class << self
6
7
  attr_accessor :query_time, :query_count
7
8
  end
8
- self.query_count = 0
9
- self.query_time = 0
9
+ self.query_count = Atomic.new(0)
10
+ self.query_time = Atomic.new(0)
10
11
 
11
12
  def query_with_timing(*args)
12
13
  start = Time.now
13
14
  query_without_timing(*args)
14
15
  ensure
15
- Mysql2::Client.query_time += (Time.now - start)
16
- Mysql2::Client.query_count += 1
16
+ duration = (Time.now - start)
17
+ Mysql2::Client.query_time.update { |value| value + duration }
18
+ Mysql2::Client.query_count.update { |value| value + 1 }
17
19
  end
18
20
  alias_method_chain :query, :timing
19
21
  end
@@ -22,15 +24,20 @@ module Glimpse
22
24
  module Views
23
25
  class Mysql2 < View
24
26
  def duration
25
- ::Mysql2::Client.query_time
27
+ ::Mysql2::Client.query_time.value
26
28
  end
27
29
 
28
30
  def formatted_duration
29
- "%.2fms" % (duration * 1000)
31
+ ms = duration * 1000
32
+ if ms >= 1000
33
+ "%.2fms" % ms
34
+ else
35
+ "%.0fms" % ms
36
+ end
30
37
  end
31
38
 
32
39
  def calls
33
- ::Mysql2::Client.query_count
40
+ ::Mysql2::Client.query_count.value
34
41
  end
35
42
 
36
43
  def results
@@ -42,8 +49,8 @@ module Glimpse
42
49
  def setup_subscribers
43
50
  # Reset each counter when a new request starts
44
51
  before_request do
45
- ::Mysql2::Client.query_time = 0
46
- ::Mysql2::Client.query_count = 0
52
+ ::Mysql2::Client.query_time.value = 0
53
+ ::Mysql2::Client.query_count.value = 0
47
54
  end
48
55
  end
49
56
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: glimpse-mysql2
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,8 +9,24 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-03-09 00:00:00.000000000 Z
12
+ date: 2013-03-17 00:00:00.000000000 Z
13
13
  dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: glimpse
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
14
30
  - !ruby/object:Gem::Dependency
15
31
  name: mysql2
16
32
  requirement: !ruby/object:Gem::Requirement
@@ -27,6 +43,22 @@ dependencies:
27
43
  - - ! '>='
28
44
  - !ruby/object:Gem::Version
29
45
  version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: atomic
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: 1.0.0
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: 1.0.0
30
62
  description: Provide a glimpse into the MySQL queries made during your application's
31
63
  requests.
32
64
  email:
@@ -36,6 +68,7 @@ extensions: []
36
68
  extra_rdoc_files: []
37
69
  files:
38
70
  - .gitignore
71
+ - CHANGELOG.md
39
72
  - Gemfile
40
73
  - LICENSE.txt
41
74
  - README.md