appsignal-moped 1.0.0.beta.1 → 1.0.1.beta.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,36 @@
1
+ module Appsignal
2
+ module Middleware
3
+ class MopedEventSanitizer
4
+ WHITELISTED_KEYS = %w{fields flags}
5
+
6
+ def call(event)
7
+ if target?(event)
8
+ event.payload[:ops].each do |operation|
9
+ operation.each_value do |parameters|
10
+ selected(parameters).each_value do |value|
11
+ scrub!(value)
12
+ end
13
+ end
14
+ end
15
+ end
16
+ yield
17
+ end
18
+
19
+ protected
20
+
21
+ def target?(event)
22
+ event.name == Appsignal::Moped::Instrumentation::EVENT_NAME
23
+ end
24
+
25
+ def selected(parameters)
26
+ parameters.reject { |key, value| WHITELISTED_KEYS.include?(key) }
27
+ end
28
+
29
+ def scrub!(value)
30
+ if value.is_a?(Hash) || value.is_a?(Array)
31
+ Appsignal::ParamsSanitizer.scrub!(value)
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,36 @@
1
+ module Appsignal
2
+ module Middleware
3
+ class MopedEventSanitizer
4
+ WHITELISTED_KEYS = %w{fields flags}
5
+
6
+ def call(event)
7
+ if target?(event)
8
+ event.payload[:ops].each do |operation|
9
+ operation.each_value do |parameters|
10
+ selected(parameters).each_value do |value|
11
+ scrub!(value)
12
+ end
13
+ end
14
+ end
15
+ end
16
+ yield
17
+ end
18
+
19
+ protected
20
+
21
+ def target?(event)
22
+ true
23
+ end
24
+
25
+ def selected(parameters)
26
+ parameters.reject { |key, value| WHITELISTED_KEYS.include?(key) }
27
+ end
28
+
29
+ def scrub!(value)
30
+ if value.is_a?(Hash) || value.is_a?(Array)
31
+ Appsignal::ParamsSanitizer.scrub!(value)
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,40 @@
1
+ module Appsignal
2
+ module Moped
3
+ module Instrumentation
4
+ EVENT_NAME = 'query.moped'
5
+
6
+ private
7
+
8
+ def logging_with_appsignal_instrumentation(operations, &block)
9
+ ActiveSupport::Notifications.instrument(
10
+ EVENT_NAME, :ops => appsignal_log_operations(operations)
11
+ ) do
12
+ logging_without_appsignal_instrumentation(operations, &block)
13
+ end
14
+ end
15
+
16
+ def appsignal_log_operations(ops)
17
+ ops.map do |op|
18
+ {
19
+ operation_name(op) => {}.tap do |hash|
20
+ op.instance_variables.reject do |o|
21
+ o == :@full_collection_name
22
+ end.each do |attr|
23
+ value = op.instance_variable_get(attr)
24
+ hash[attr.to_s.gsub('@', '')] = value unless value.nil?
25
+ end
26
+ end
27
+ }
28
+ end
29
+ end
30
+
31
+ def operation_name(operation)
32
+ operation.class.name.split('::').last.tap do |class_name|
33
+ class_name.gsub!(/([a-z])([A-Z])/,'\1_\2')
34
+ class_name.downcase!
35
+ end
36
+ end
37
+
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,39 @@
1
+ module Appsignal
2
+ module Moped
3
+ module Instrumentation
4
+
5
+ private
6
+
7
+ def logging_with_appsignal_instrumentation(operations, &block)
8
+ ActiveSupport::Notifications.instrument(
9
+ 'query.moped', :ops => appsignal_log_operations(operations)
10
+ ) do
11
+ logging_without_appsignal_instrumentation(operations, &block)
12
+ end
13
+ end
14
+
15
+ def appsignal_log_operations(ops)
16
+ ops.map do |op|
17
+ {
18
+ operation_name(op) => {}.tap do |hash|
19
+ op.instance_variables.reject do |o|
20
+ o == :@full_collection_name
21
+ end.each do |attr|
22
+ value = op.instance_variable_get(attr)
23
+ hash[attr.to_s.gsub('@', '')] = value unless value.nil?
24
+ end
25
+ end
26
+ }
27
+ end
28
+ end
29
+
30
+ def operation_name(operation)
31
+ operation.class.name.split('::').last.tap do |class_name|
32
+ class_name.gsub!(/([a-z])([A-Z])/,'\1_\2')
33
+ class_name.downcase!
34
+ end
35
+ end
36
+
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,5 @@
1
+ module Appsignal
2
+ module Moped
3
+ VERSION = '1.0.1.beta.0'
4
+ end
5
+ end
@@ -0,0 +1,16 @@
1
+ require 'moped'
2
+ require 'rails'
3
+ require 'appsignal'
4
+ require 'appsignal/moped/instrumentation'
5
+ require 'appsignal/middleware/moped_event_sanitizer'
6
+
7
+ ::Moped::Node.class_eval do
8
+ include Appsignal::Moped::Instrumentation
9
+
10
+ private
11
+
12
+ alias_method :logging_without_appsignal_instrumentation, :logging
13
+ alias_method :logging, :logging_with_appsignal_instrumentation
14
+ end
15
+
16
+ Appsignal.post_processing_middleware.add Appsignal::Middleware::MopedEventSanitizer
@@ -0,0 +1,16 @@
1
+ require 'moped'
2
+ require 'rails'
3
+ require 'appsignal'
4
+ require 'appsignal/moped/instrumentation'
5
+ require 'appsignal/middleware/moped_event_sanitizer'
6
+
7
+ ::Moped::Node.class_eval do
8
+ include Appsignal::Moped::Instrumentation
9
+
10
+ private
11
+
12
+ alias_method :logging_without_appsignal_instrumentation, :logging
13
+ alias_method :logging, :logging_with_appsignal_instrumentation
14
+ end
15
+
16
+ Appsignal.post_processing_middleware.add Appsignal::Moped::MopedEventSanitizer
metadata CHANGED
@@ -1,105 +1,111 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: appsignal-moped
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.beta.1
5
4
  prerelease: 6
5
+ version: 1.0.1.beta.0
6
6
  platform: ruby
7
7
  authors:
8
8
  - Steven Weller
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-11-30 00:00:00.000000000 Z
12
+ date: 2013-04-05 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
+ version_requirements: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: 0.5.0.beta1
20
+ none: false
21
+ prerelease: false
15
22
  name: appsignal
16
23
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
24
  requirements:
19
25
  - - ~>
20
26
  - !ruby/object:Gem::Version
21
- version: '0'
27
+ version: 0.5.0.beta1
28
+ none: false
22
29
  type: :runtime
23
- prerelease: false
30
+ - !ruby/object:Gem::Dependency
24
31
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
32
  requirements:
27
33
  - - ~>
28
34
  - !ruby/object:Gem::Version
29
- version: '0'
30
- - !ruby/object:Gem::Dependency
35
+ version: '1.0'
36
+ none: false
37
+ prerelease: false
31
38
  name: moped
32
39
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
40
  requirements:
35
41
  - - ~>
36
42
  - !ruby/object:Gem::Version
37
- version: 1.0.0
38
- type: :runtime
39
- prerelease: false
40
- version_requirements: !ruby/object:Gem::Requirement
43
+ version: '1.0'
41
44
  none: false
42
- requirements:
43
- - - ~>
44
- - !ruby/object:Gem::Version
45
- version: 1.0.0
45
+ type: :runtime
46
46
  - !ruby/object:Gem::Dependency
47
- name: rake
48
- requirement: !ruby/object:Gem::Requirement
49
- none: false
47
+ version_requirements: !ruby/object:Gem::Requirement
50
48
  requirements:
51
49
  - - ! '>='
52
50
  - !ruby/object:Gem::Version
53
51
  version: '0'
54
- type: :development
55
- prerelease: false
56
- version_requirements: !ruby/object:Gem::Requirement
57
52
  none: false
53
+ prerelease: false
54
+ name: rake
55
+ requirement: !ruby/object:Gem::Requirement
58
56
  requirements:
59
57
  - - ! '>='
60
58
  - !ruby/object:Gem::Version
61
59
  version: '0'
62
- - !ruby/object:Gem::Dependency
63
- name: rspec
64
- requirement: !ruby/object:Gem::Requirement
65
60
  none: false
61
+ type: :development
62
+ - !ruby/object:Gem::Dependency
63
+ version_requirements: !ruby/object:Gem::Requirement
66
64
  requirements:
67
65
  - - ~>
68
66
  - !ruby/object:Gem::Version
69
67
  version: 2.12.0
70
- type: :development
71
- prerelease: false
72
- version_requirements: !ruby/object:Gem::Requirement
73
68
  none: false
69
+ prerelease: false
70
+ name: rspec
71
+ requirement: !ruby/object:Gem::Requirement
74
72
  requirements:
75
73
  - - ~>
76
74
  - !ruby/object:Gem::Version
77
75
  version: 2.12.0
78
- - !ruby/object:Gem::Dependency
79
- name: pry
80
- requirement: !ruby/object:Gem::Requirement
81
76
  none: false
77
+ type: :development
78
+ - !ruby/object:Gem::Dependency
79
+ version_requirements: !ruby/object:Gem::Requirement
82
80
  requirements:
83
81
  - - ! '>='
84
82
  - !ruby/object:Gem::Version
85
83
  version: '0'
86
- type: :development
87
- prerelease: false
88
- version_requirements: !ruby/object:Gem::Requirement
89
84
  none: false
85
+ prerelease: false
86
+ name: pry
87
+ requirement: !ruby/object:Gem::Requirement
90
88
  requirements:
91
89
  - - ! '>='
92
90
  - !ruby/object:Gem::Version
93
91
  version: '0'
94
- description: Log your moped queries with ActiveSupport::Notifications.insturment calls
92
+ none: false
93
+ type: :development
94
+ description: Log your moped queries with ActiveSupport::Notifications.instrument calls
95
95
  email:
96
96
  - steven@80beans.com
97
97
  executables: []
98
98
  extensions: []
99
99
  extra_rdoc_files: []
100
100
  files:
101
- - lib/appsignal_moped/version.rb
102
- - lib/appsignal_moped.rb
101
+ - lib/appsignal/middleware/moped_event_sanitizer.rb
102
+ - lib/appsignal/middleware/moped_event_sanitizer.rb~
103
+ - lib/appsignal/moped/instrumentation.rb
104
+ - lib/appsignal/moped/instrumentation.rb~
105
+ - lib/appsignal/moped/version.rb
106
+ - lib/appsignal/moped/version.rb~
107
+ - lib/appsignal-moped.rb
108
+ - lib/appsignal-moped.rb~
103
109
  - README.md
104
110
  homepage: https://github.com/80beans/appsignal-moped
105
111
  licenses: []
@@ -108,23 +114,23 @@ rdoc_options: []
108
114
  require_paths:
109
115
  - lib
110
116
  required_ruby_version: !ruby/object:Gem::Requirement
111
- none: false
112
117
  requirements:
113
118
  - - ! '>='
114
119
  - !ruby/object:Gem::Version
115
120
  version: '0'
116
121
  segments:
117
122
  - 0
118
- hash: -48578723216372670
119
- required_rubygems_version: !ruby/object:Gem::Requirement
123
+ hash: 3384813339710934242
120
124
  none: false
125
+ required_rubygems_version: !ruby/object:Gem::Requirement
121
126
  requirements:
122
127
  - - ! '>'
123
128
  - !ruby/object:Gem::Version
124
129
  version: 1.3.1
130
+ none: false
125
131
  requirements: []
126
132
  rubyforge_project:
127
- rubygems_version: 1.8.19
133
+ rubygems_version: 1.8.24
128
134
  signing_key:
129
135
  specification_version: 3
130
136
  summary: Add instrument calls to mongodb queries made with moped(or mongoid). For
@@ -1,42 +0,0 @@
1
- require 'moped'
2
- require 'active_support'
3
-
4
- module Appsignal
5
- module Moped
6
- module Instrumentation
7
-
8
- private
9
-
10
- def logging_with_appsignal_instrumentation(operations, &block)
11
- ActiveSupport::Notifications.instrument(
12
- 'query.moped', :operations => appsignal_log_operations(operations)
13
- ) do
14
- logging_without_appsignal_instrumentation(operations, &block)
15
- end
16
- end
17
-
18
- def appsignal_log_operations(ops)
19
- ops.map do |op|
20
- {}.tap do |hash|
21
- op.instance_variables.reject do |o|
22
- o == :@full_collection_name
23
- end.each do |attr|
24
- value = op.instance_variable_get(attr)
25
- hash[attr.to_s.gsub('@', '')] = value unless value.nil?
26
- end
27
- end
28
- end
29
- end
30
-
31
- end
32
- end
33
- end
34
-
35
- ::Moped::Node.class_eval do
36
- include Appsignal::Moped::Instrumentation
37
-
38
- private
39
-
40
- alias_method :logging_without_appsignal_instrumentation, :logging
41
- alias_method :logging, :logging_with_appsignal_instrumentation
42
- end