okuribito 0.1.3 → 0.1.4
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.
- checksums.yaml +4 -4
- data/.rubocop.yml +1 -1
- data/README.md +4 -27
- data/lib/okuribito.rb +31 -19
- data/lib/okuribito/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 546ff74e85424ffdd61c223346d05db2df28232c
|
4
|
+
data.tar.gz: 3972e942e590bc37402de3ffcdc7ead2bcaad654
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1a52c32a171b6a7f6fddfe0f4c181d7b6e6bd7bdba80c1597a63bf3e06c1d5ebc7d76c127ced27aa4b65bdf0b6299a48a36dc0e46ef05cc09bea9b08e1795f2a
|
7
|
+
data.tar.gz: def1c5cba98bfbd1d0a6549712e7497f91da83a162e61a8a506923def5460b2aed7796f8abe505a65cd5d0b822ba31482812f33956d2df31fdbd9c92e6e27aee
|
data/.rubocop.yml
CHANGED
data/README.md
CHANGED
@@ -2,10 +2,14 @@
|
|
2
2
|
|
3
3
|
# Okuribito
|
4
4
|
|
5
|
+
https://rubygems.org/gems/okuribito
|
6
|
+
|
5
7
|

|
6
8
|
|
7
9
|
Okuribito is a gem to judge whether methods should be sent to the heaven :innocent:.
|
10
|
+
|
8
11
|
In other words, it can be used in order to extract the obsolete method.
|
12
|
+
|
9
13
|
Okuribito was named after a japanese movie.
|
10
14
|
|
11
15
|
## Installation
|
@@ -122,33 +126,6 @@ okuribito = Okuribito::OkuribitoPatch.new do |method_name, obj_name, caller_info
|
|
122
126
|
end
|
123
127
|
```
|
124
128
|
|
125
|
-
### Send to slack
|
126
|
-
|
127
|
-
```ruby
|
128
|
-
okuribito = Okuribito::OkuribitoPatch.new do |method_name, obj_name, caller_info|
|
129
|
-
uri = URI.parse("https://hooks.slack.com/services/xxx...")
|
130
|
-
params = {
|
131
|
-
text: "OKURIBITO detect a method call.",
|
132
|
-
username: "OKURIBITO",
|
133
|
-
icon_emoji: ":innocent:",
|
134
|
-
attachments: [{
|
135
|
-
fields: [{
|
136
|
-
title: "#{obj_name}::#{method_name}",
|
137
|
-
value: "#{caller_info[0]}",
|
138
|
-
short: false
|
139
|
-
}]
|
140
|
-
}]
|
141
|
-
}
|
142
|
-
http = Net::HTTP.new(uri.host, uri.port)
|
143
|
-
http.use_ssl = true
|
144
|
-
http.start do
|
145
|
-
request = Net::HTTP::Post.new(uri.path)
|
146
|
-
request.set_form_data(payload: params.to_json)
|
147
|
-
http.request(request)
|
148
|
-
end
|
149
|
-
end
|
150
|
-
```
|
151
|
-
|
152
129
|
### Other ideas
|
153
130
|
- Send to Fluentd, TreasureData, Slack...
|
154
131
|
|
data/lib/okuribito.rb
CHANGED
@@ -15,7 +15,7 @@ module Okuribito
|
|
15
15
|
end
|
16
16
|
|
17
17
|
module SimplePatchModule
|
18
|
-
def
|
18
|
+
def define_patch(method_name, _patch, _id, _opt = {})
|
19
19
|
define_method(method_name) do |*args|
|
20
20
|
yield(to_s, caller) if block_given?
|
21
21
|
super(*args)
|
@@ -24,12 +24,12 @@ module Okuribito
|
|
24
24
|
end
|
25
25
|
|
26
26
|
module FunctionalPatchModule
|
27
|
-
def
|
28
|
-
instance_variable_set("@#{method_name}_called", false)
|
27
|
+
def define_patch(method_name, patch, id, opt = {})
|
28
|
+
patch.instance_variable_set("@#{method_name}_#{id}_called", false)
|
29
29
|
define_method(method_name) do |*args|
|
30
|
-
if block_given? && !instance_variable_get("@#{method_name}_called")
|
30
|
+
if block_given? && !patch.instance_variable_get("@#{method_name}_#{id}_called")
|
31
31
|
yield(to_s, caller)
|
32
|
-
instance_variable_set("@#{method_name}_called", true) if opt[:once_detect]
|
32
|
+
patch.instance_variable_set("@#{method_name}_#{id}_called", true) if opt[:once_detect]
|
33
33
|
end
|
34
34
|
super(*args)
|
35
35
|
end
|
@@ -50,14 +50,26 @@ module Okuribito
|
|
50
50
|
|
51
51
|
klass.class_eval do
|
52
52
|
if opt.present?
|
53
|
-
|
54
|
-
|
53
|
+
i_patch_name = "#{class_name}InstancePatch"
|
54
|
+
c_patch_name = "#{class_name}ClassPatch"
|
55
|
+
if FunctionalPatchModule.const_defined?(i_patch_name.to_sym)
|
56
|
+
i_method_patch = Module.new.extend(FunctionalPatchModule)
|
57
|
+
else
|
58
|
+
i_method_patch = FunctionalPatchModule
|
59
|
+
.const_set(i_patch_name, Module.new.extend(FunctionalPatchModule))
|
60
|
+
end
|
61
|
+
if FunctionalPatchModule.const_defined?(c_patch_name.to_sym)
|
62
|
+
c_method_patch = Module.new.extend(FunctionalPatchModule)
|
63
|
+
else
|
64
|
+
c_method_patch = FunctionalPatchModule
|
65
|
+
.const_set(c_patch_name, Module.new.extend(FunctionalPatchModule))
|
66
|
+
end
|
55
67
|
else
|
56
|
-
|
57
|
-
|
68
|
+
i_method_patch = Module.new.extend(SimplePatchModule)
|
69
|
+
c_method_patch = Module.new.extend(SimplePatchModule)
|
58
70
|
end
|
59
|
-
|
60
|
-
|
71
|
+
i_method_patched = 0
|
72
|
+
c_method_patched = 0
|
61
73
|
|
62
74
|
observe_methods.each do |observe_method|
|
63
75
|
next unless md = PATTERN.match(observe_method)
|
@@ -67,24 +79,24 @@ module Okuribito
|
|
67
79
|
case symbol
|
68
80
|
when INSTANCE_METHOD_SYMBOL
|
69
81
|
next unless klass.instance_methods.include?(method_name)
|
70
|
-
|
71
|
-
|
82
|
+
i_method_patch.module_eval do
|
83
|
+
define_patch(method_name, i_method_patch, "i", opt) do |obj_name, caller_info|
|
72
84
|
callback.call(method_name, obj_name, caller_info)
|
73
85
|
end
|
74
86
|
end
|
75
|
-
|
87
|
+
i_method_patched += 1
|
76
88
|
when CLASS_METHOD_SYMBOL
|
77
89
|
next unless klass.respond_to?(method_name)
|
78
|
-
|
79
|
-
|
90
|
+
c_method_patch.module_eval do
|
91
|
+
define_patch(method_name, c_method_patch, "c", opt) do |obj_name, caller_info|
|
80
92
|
callback.call(method_name, obj_name, caller_info)
|
81
93
|
end
|
82
94
|
end
|
83
|
-
|
95
|
+
c_method_patched += 1
|
84
96
|
end
|
85
97
|
end
|
86
|
-
prepend
|
87
|
-
singleton_class.send(:prepend,
|
98
|
+
prepend i_method_patch if i_method_patched > 0
|
99
|
+
singleton_class.send(:prepend, c_method_patch) if c_method_patched > 0
|
88
100
|
end
|
89
101
|
end
|
90
102
|
end
|
data/lib/okuribito/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: okuribito
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- muramurasan
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-10-
|
11
|
+
date: 2016-10-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|