glimpse-mysql2 1.0.0 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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