hanging_methods 0.0.1 → 0.0.2
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.
data/README.md
CHANGED
@@ -28,9 +28,36 @@ interesting.add.a_method
|
|
28
28
|
interesting.add.another_method(1, 2)
|
29
29
|
|
30
30
|
puts interesting.hanging_method_invocations(:add)
|
31
|
+
# [[:a_method], [:another_method, 1, 2]]
|
31
32
|
```
|
32
33
|
|
33
34
|
|
35
|
+
## Get notified of a hanging method
|
36
|
+
|
37
|
+
You can be notified of method being hanged and specify its result.
|
38
|
+
|
39
|
+
```ruby
|
40
|
+
require 'rubygems'
|
41
|
+
require 'hanging_methods'
|
42
|
+
|
43
|
+
class Interesting
|
44
|
+
include HangingMethods
|
45
|
+
|
46
|
+
add_hanging_method :add, after_invocation: :added
|
47
|
+
|
48
|
+
private
|
49
|
+
|
50
|
+
def added(method_name_and_arguments)
|
51
|
+
# method_name_and_arguments is [:a_method, 1, 2]
|
52
|
+
return :very_interesting
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
interesting = Interesting.new
|
57
|
+
interesting.add.a_method(1, 2)
|
58
|
+
# returns :very_interesting
|
59
|
+
```
|
60
|
+
|
34
61
|
# Credits
|
35
62
|
|
36
63
|
[Hanging Methods](https://github.com/michaelgpearce/hanging_methods) is maintained by [Michael Pearce](https://github.com/michaelgpearce)
|
data/lib/hanging_methods.rb
CHANGED
@@ -30,7 +30,7 @@ module HangingMethods
|
|
30
30
|
def add_hanging_method_name_and_args_invocation(hanging_method_name, method_name_and_args)
|
31
31
|
hanging_method_invocations(hanging_method_name) << method_name_and_args
|
32
32
|
|
33
|
-
if after_invocation = self.class.hanging_method_options(hanging_method_name)[:after_invocation]
|
33
|
+
ret = if after_invocation = self.class.hanging_method_options(hanging_method_name)[:after_invocation]
|
34
34
|
send(after_invocation, method_name_and_args)
|
35
35
|
end
|
36
36
|
end
|
@@ -2,9 +2,12 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe HangingMethods::MethodCallNotifier do
|
4
4
|
describe "#method_missing" do
|
5
|
+
let(:return_value) { rand }
|
6
|
+
|
5
7
|
before do
|
6
8
|
@notifier = HangingMethods::MethodCallNotifier.new do |*args|
|
7
9
|
@callback_args = args
|
10
|
+
return_value
|
8
11
|
end
|
9
12
|
end
|
10
13
|
|
@@ -17,8 +20,8 @@ describe HangingMethods::MethodCallNotifier do
|
|
17
20
|
expect(@callback_args).to eq([:call_a_method, 'with args'])
|
18
21
|
end
|
19
22
|
|
20
|
-
it "should return
|
21
|
-
expect(subject).to eq(
|
23
|
+
it "should return block result" do
|
24
|
+
expect(subject).to eq(return_value)
|
22
25
|
end
|
23
26
|
end
|
24
27
|
end
|
@@ -10,11 +10,13 @@ describe HangingMethods do
|
|
10
10
|
def add_more_invocations
|
11
11
|
@add_more_invocations ||= []
|
12
12
|
end
|
13
|
-
|
13
|
+
|
14
14
|
private
|
15
15
|
|
16
16
|
def add_more_after_invocation(method_name_and_args)
|
17
17
|
add_more_invocations << method_name_and_args
|
18
|
+
|
19
|
+
method_name_and_args.size
|
18
20
|
end
|
19
21
|
end
|
20
22
|
|
@@ -37,15 +39,18 @@ describe HangingMethods do
|
|
37
39
|
end
|
38
40
|
|
39
41
|
context "with after_invocation" do
|
40
|
-
|
41
|
-
|
42
|
-
client.add_more.another_method('arg1', 'arg2')
|
43
|
-
end
|
42
|
+
let!(:method_1_return) { client.add_more.a_method }
|
43
|
+
let!(:method_2_return) { client.add_more.another_method('arg1', 'arg2') }
|
44
44
|
|
45
45
|
it "should add invocation" do
|
46
46
|
subject
|
47
47
|
expect(client.add_more_invocations).to eq [[:a_method], [:another_method, 'arg1', 'arg2']]
|
48
48
|
end
|
49
|
+
|
50
|
+
it "should return the value of the after_invocation method" do
|
51
|
+
expect(method_1_return).to eq 1
|
52
|
+
expect(method_2_return).to eq 3
|
53
|
+
end
|
49
54
|
end
|
50
55
|
end
|
51
56
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hanging_methods
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -84,7 +84,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
84
84
|
version: '0'
|
85
85
|
requirements: []
|
86
86
|
rubyforge_project: hanging_methods
|
87
|
-
rubygems_version: 1.8.
|
87
|
+
rubygems_version: 1.8.25
|
88
88
|
signing_key:
|
89
89
|
specification_version: 3
|
90
90
|
summary: Add a method that you can hang other methods
|