glimpse-mongo 1.0.1 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG.md CHANGED
@@ -4,4 +4,8 @@
4
4
 
5
5
  # 1.0.1
6
6
 
7
- - Require mongo >= 1.8 for method consistency.
7
+ - Require mongo >= 1.8 for method consistency.
8
+
9
+ # 1.1.0
10
+
11
+ - Query count and Query time are now threadsafe.
@@ -19,4 +19,5 @@ Gem::Specification.new do |gem|
19
19
 
20
20
  gem.add_dependency 'glimpse'
21
21
  gem.add_dependency 'mongo', '>= 1.8'
22
+ gem.add_dependency 'atomic', '>= 1.0.0'
22
23
  end
@@ -1,5 +1,5 @@
1
1
  module Glimpse
2
2
  module Mongo
3
- VERSION = '1.0.1'
3
+ VERSION = '1.1.0'
4
4
  end
5
5
  end
@@ -1,4 +1,5 @@
1
1
  require 'mongo'
2
+ require 'atomic'
2
3
 
3
4
  # At the deepest of all commands in mongo go to Mongo::Connection
4
5
  # and the following methods:
@@ -12,15 +13,16 @@ class Mongo::Connection
12
13
  class << self
13
14
  attr_accessor :command_time, :command_count
14
15
  end
15
- self.command_count = 0
16
- self.command_time = 0
16
+ self.command_count = Atomic.new(0)
17
+ self.command_time = Atomic.new(0)
17
18
 
18
19
  def send_message_with_timing(*args)
19
20
  start = Time.now
20
21
  send_message_without_timing(*args)
21
22
  ensure
22
- Mongo::Connection.command_time += (Time.now - start)
23
- Mongo::Connection.command_count += 1
23
+ duration = (Time.now - start)
24
+ Mongo::Connection.command_time.update { |value| value + duration }
25
+ Mongo::Connection.command_count.update { |value| value + 1 }
24
26
  end
25
27
  alias_method_chain :send_message, :timing
26
28
 
@@ -28,8 +30,9 @@ class Mongo::Connection
28
30
  start = Time.now
29
31
  send_message_with_gle_without_timing(*args)
30
32
  ensure
31
- Mongo::Connection.command_time += (Time.now - start)
32
- Mongo::Connection.command_count += 1
33
+ duration = (Time.now - start)
34
+ Mongo::Connection.command_time.update { |value| value + duration }
35
+ Mongo::Connection.command_count.update { |value| value + 1 }
33
36
  end
34
37
  alias_method_chain :send_message_with_gle, :timing
35
38
 
@@ -37,8 +40,9 @@ class Mongo::Connection
37
40
  start = Time.now
38
41
  receive_message_without_timing(*args)
39
42
  ensure
40
- Mongo::Connection.command_time += (Time.now - start)
41
- Mongo::Connection.command_count += 1
43
+ duration = (Time.now - start)
44
+ Mongo::Connection.command_time.update { |value| value + duration }
45
+ Mongo::Connection.command_count.update { |value| value + 1 }
42
46
  end
43
47
  alias_method_chain :receive_message, :timing
44
48
  end
@@ -47,7 +51,7 @@ module Glimpse
47
51
  module Views
48
52
  class Mongo < View
49
53
  def duration
50
- ::Mongo::Connection.command_time
54
+ ::Mongo::Connection.command_time.value
51
55
  end
52
56
 
53
57
  def formatted_duration
@@ -60,7 +64,7 @@ module Glimpse
60
64
  end
61
65
 
62
66
  def calls
63
- ::Mongo::Connection.command_count
67
+ ::Mongo::Connection.command_count.value
64
68
  end
65
69
 
66
70
  def results
@@ -72,8 +76,8 @@ module Glimpse
72
76
  def setup_subscribers
73
77
  # Reset each counter when a new request starts
74
78
  before_request do
75
- ::Mongo::Connection.command_time = 0
76
- ::Mongo::Connection.command_count = 0
79
+ ::Mongo::Connection.command_time.value = 0
80
+ ::Mongo::Connection.command_count.value = 0
77
81
  end
78
82
  end
79
83
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: glimpse-mongo
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-03-14 00:00:00.000000000 Z
12
+ date: 2013-03-17 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: glimpse
@@ -43,6 +43,22 @@ dependencies:
43
43
  - - ! '>='
44
44
  - !ruby/object:Gem::Version
45
45
  version: '1.8'
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
46
62
  description: Provide a glimpse into the Mongo commands made within your Rails application.
47
63
  email:
48
64
  - me@garrettbjerkhoel.com