glimpse-pg 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 'pg'
22
+ gem.add_dependency 'atomic', '>= 1.0.0'
21
23
  end
@@ -1,5 +1,5 @@
1
1
  module Glimpse
2
2
  module PG
3
- VERSION = '1.0.0'
3
+ VERSION = '1.1.0'
4
4
  end
5
5
  end
@@ -1,19 +1,21 @@
1
1
  require 'pg'
2
+ require 'atomic'
2
3
 
3
4
  # Instrument SQL time
4
5
  class PG::Connection
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 exec_with_timing(*args)
12
13
  start = Time.now
13
14
  exec_without_timing(*args)
14
15
  ensure
15
- PG::Connection.query_time += (Time.now - start)
16
- PG::Connection.query_count += 1
16
+ duration = (Time.now - start)
17
+ PG::Connection.query_time.update { |value| value + duration }
18
+ PG::Connection.query_count.update { |value| value + 1 }
17
19
  end
18
20
  alias_method_chain :exec, :timing
19
21
 
@@ -21,8 +23,9 @@ class PG::Connection
21
23
  start = Time.now
22
24
  async_exec_without_timing(*args)
23
25
  ensure
24
- PG::Connection.query_time += (Time.now - start)
25
- PG::Connection.query_count += 1
26
+ duration = (Time.now - start)
27
+ PG::Connection.query_time.update { |value| value + duration }
28
+ PG::Connection.query_count.update { |value| value + 1 }
26
29
  end
27
30
  alias_method_chain :async_exec, :timing
28
31
  end
@@ -31,15 +34,20 @@ module Glimpse
31
34
  module Views
32
35
  class PG < View
33
36
  def duration
34
- ::PG::Connection.query_time
37
+ ::PG::Connection.query_time.value
35
38
  end
36
39
 
37
40
  def formatted_duration
38
- "%.2fms" % (duration * 1000)
41
+ ms = duration * 1000
42
+ if ms >= 1000
43
+ "%.2fms" % ms
44
+ else
45
+ "%.0fms" % ms
46
+ end
39
47
  end
40
48
 
41
49
  def calls
42
- ::PG::Connection.query_count
50
+ ::PG::Connection.query_count.value
43
51
  end
44
52
 
45
53
  def results
@@ -51,8 +59,8 @@ module Glimpse
51
59
  def setup_subscribers
52
60
  # Reset each counter when a new request starts
53
61
  before_request do
54
- ::PG::Connection.query_time = 0
55
- ::PG::Connection.query_count = 0
62
+ ::PG::Connection.query_time.value = 0
63
+ ::PG::Connection.query_count.value = 0
56
64
  end
57
65
  end
58
66
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: glimpse-pg
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-10 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: pg
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 Postgres 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