uncouple 0.1.3 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +13 -0
- data/lib/uncouple/action/instrumentation.rb +32 -0
- data/lib/uncouple/rails/railtie.rb +2 -5
- data/lib/uncouple/version.rb +1 -1
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c097b94c4c7b8cc0b215c79da0cfca98c3329e73
|
4
|
+
data.tar.gz: 844858678dc1949ec6fd8437390759e98d95547a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: edb4530e96ca6af7e5a514719b2a10ca86a8e19b41836af7ed99defb33b2bbdc1da1766e0448e30b10fd1181579ad7562a4eb325222dfee441a9a0241bd13bc8
|
7
|
+
data.tar.gz: dfb4c35ab9ce0e2284dc9582ec7ca81ef8d0ca64b577b748a379233d317836cd4f7545d86b9d000b57598d3836597929a57970ab1dd13f437c54b6b94d9c0443
|
data/README.md
CHANGED
@@ -119,6 +119,19 @@ class Metric::CreateAction < Uncouple::Action
|
|
119
119
|
end
|
120
120
|
```
|
121
121
|
|
122
|
+
## Instrumentation through ActiveSupport::Notifications
|
123
|
+
|
124
|
+
Version 0.2.0 adds support for instrumentation on `perform` and `authorize!` using ActiveSupport::Notifications. Subscribe to notifications using an initializer, and do whatever you like with the data.
|
125
|
+
|
126
|
+
```rb
|
127
|
+
# config/initializers/notifications.rb
|
128
|
+
ActiveSupport::Notifications.subscribe /.*(Action)#(perform|authorize!)/ do |*args|
|
129
|
+
event = ActiveSupport::Notifications::Event.new(*args)
|
130
|
+
Rails.logger.info "#{event.name} completed in #{event.duration}ms"
|
131
|
+
end
|
132
|
+
|
133
|
+
#=> Metric::IndexAction#perform completed in 8.253ms
|
134
|
+
```
|
122
135
|
|
123
136
|
## Development
|
124
137
|
|
@@ -0,0 +1,32 @@
|
|
1
|
+
module Uncouple
|
2
|
+
class Action
|
3
|
+
module Instrumentation
|
4
|
+
|
5
|
+
def method_added(method)
|
6
|
+
case method
|
7
|
+
when :perform, :authorize!
|
8
|
+
alias_with_instrumentation(method)
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
def alias_with_instrumentation(method)
|
13
|
+
|
14
|
+
method_without_instrumentation = "#{method}_without_instrumentation".to_sym
|
15
|
+
method_with_instrumentation = "#{method}_with_instrumentation".to_sym
|
16
|
+
|
17
|
+
return if instance_methods.include?(method_with_instrumentation)
|
18
|
+
|
19
|
+
define_method method_with_instrumentation do
|
20
|
+
ActiveSupport::Notifications.instrument "#{self.class.to_s}##{method}", params do
|
21
|
+
send(method_without_instrumentation)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
alias_method method_without_instrumentation, method
|
26
|
+
alias_method method, method_with_instrumentation
|
27
|
+
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -1,11 +1,8 @@
|
|
1
1
|
class Uncouple::Railtie < Rails::Railtie
|
2
2
|
|
3
3
|
initializer "uncouple.configure_rails_initialization" do
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
rake_tasks do
|
8
|
-
|
4
|
+
require "uncouple/action/instrumentation"
|
5
|
+
Uncouple::Action.send(:extend, Uncouple::Action::Instrumentation)
|
9
6
|
end
|
10
7
|
|
11
8
|
generators do
|
data/lib/uncouple/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: uncouple
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Spencer Steffen
|
@@ -86,6 +86,7 @@ files:
|
|
86
86
|
- lib/uncouple.rb
|
87
87
|
- lib/uncouple/action.rb
|
88
88
|
- lib/uncouple/action/authorization.rb
|
89
|
+
- lib/uncouple/action/instrumentation.rb
|
89
90
|
- lib/uncouple/action_performer.rb
|
90
91
|
- lib/uncouple/rails.rb
|
91
92
|
- lib/uncouple/rails/generators/action_generator.rb
|