proxeze 1.1.0 → 1.1.1
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.rdoc +83 -0
- data/VERSION +1 -1
- data/proxeze.gemspec +1 -1
- data/spec/proxeze_spec.rb +1 -2
- metadata +2 -2
data/README.rdoc
CHANGED
@@ -123,6 +123,89 @@ Note: I don't recommend overriding the #hash method on your class, this serves o
|
|
123
123
|
== Method Interceptions
|
124
124
|
Proxeze has the ability to surround instance method calls with _before_ and _after_ callbacks. This support was lifted straight from proxy_machine (https://github.com/tulios/proxy_machine).
|
125
125
|
|
126
|
+
=== Defining callbacks at the method level
|
127
|
+
|
128
|
+
==== before
|
129
|
+
|
130
|
+
p = Proxeze.for [0, 1, 2, 3] do
|
131
|
+
before :reverse do |obj, args|
|
132
|
+
obj << obj.length
|
133
|
+
end
|
134
|
+
end
|
135
|
+
|
136
|
+
p.reverse # => [4, 3, 2, 1, 0]
|
137
|
+
|
138
|
+
==== after
|
139
|
+
|
140
|
+
p = Proxeze.for [4, 2, 3] do
|
141
|
+
after :reverse do |obj, result, args|
|
142
|
+
result.sort
|
143
|
+
end
|
144
|
+
end
|
145
|
+
|
146
|
+
p.reverse => [4, 3, 2] # We reordered the list
|
147
|
+
|
148
|
+
You will always receive the arguments passed to the original method.
|
149
|
+
|
150
|
+
=== Defining callbacks for all method calls
|
151
|
+
|
152
|
+
==== before_all
|
153
|
+
This callback will receive a reference of the object, the symbol of the called method and the
|
154
|
+
original arguments passed.
|
155
|
+
|
156
|
+
logged = nil
|
157
|
+
p = Proxeze.for [0, 1, 2, 3] do
|
158
|
+
before_all do |obj, method, args|
|
159
|
+
logged = "before #{method} on #{obj.inspect} with args[#{args.inspect}]"
|
160
|
+
end
|
161
|
+
end
|
162
|
+
p.reverse # => [3, 2, 1, 0]
|
163
|
+
logged # => before reverse on [0, 1, 2, 3] with args[[]]
|
164
|
+
|
165
|
+
p.size => 4
|
166
|
+
logged # => before size on [0, 1, 2, 3] with args[[]]
|
167
|
+
|
168
|
+
p.unshift 9 # => [9, 0, 1, 2, 3]
|
169
|
+
logged # => before unshift on [0, 1, 2, 3] with args[[9]]
|
170
|
+
|
171
|
+
==== after_all
|
172
|
+
This callback will receive a reference of the object, the result of execution (this result could be nil),
|
173
|
+
the symbol of the called method and the arguments passed.
|
174
|
+
|
175
|
+
logged = nil
|
176
|
+
p = Proxeze.for [1, 2, 3] do
|
177
|
+
after_all do |obj, result, method, args|
|
178
|
+
logged = "after #{method} on #{obj.inspect} with args[#{args.inspect}], result is now [#{result}]"
|
179
|
+
result
|
180
|
+
end
|
181
|
+
end
|
182
|
+
p.reverse # => [3, 2, 1]
|
183
|
+
logged # => after reverse on [1, 2, 3] with args[[]], result is now [[3, 2, 1]]
|
184
|
+
|
185
|
+
p.size # => 3
|
186
|
+
logged # => after size on [1, 2, 3] with args[[]], result is now [3]
|
187
|
+
|
188
|
+
=== Registering a class to perform a callback
|
189
|
+
|
190
|
+
The constructor will receive the object, in case of an :after it will receive the result too.
|
191
|
+
You need to have a :call method. Proxeze will create a new instance of the class every time it
|
192
|
+
needs to use it. You could use this feature with the before_all and after_all too.
|
193
|
+
|
194
|
+
# Example of class
|
195
|
+
class SortPerformer
|
196
|
+
def initialize object, result = nil, method = nil, args = nil
|
197
|
+
@object = object; @result = result; @method = method, @args = args
|
198
|
+
end
|
199
|
+
|
200
|
+
def call; @object.sort! end
|
201
|
+
end
|
202
|
+
|
203
|
+
p = Proxeze.for [1, 4, 2, 3] do
|
204
|
+
after :reverse, SortPerformer
|
205
|
+
end
|
206
|
+
|
207
|
+
p.reverse => [1, 2, 3, 4]
|
208
|
+
|
126
209
|
== Supported Ruby versions
|
127
210
|
This code has been tested on 1.8.7, 1.9.2, and JRuby 1.5.6. I haven't bothered to test it on anything else, but I strongly suspect it will work just fine on any Ruby implementation greater than 1.8.6.
|
128
211
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.1.
|
1
|
+
1.1.1
|
data/proxeze.gemspec
CHANGED
data/spec/proxeze_spec.rb
CHANGED
@@ -246,8 +246,7 @@ describe Proxeze do
|
|
246
246
|
|
247
247
|
it "should be able to add hooks to a proxied instance" do
|
248
248
|
a = Proxeze.for [0, 1, 3, 2, 5, 4] do
|
249
|
-
before :reverse do
|
250
|
-
target, mid, arguments = *args
|
249
|
+
before :reverse do |target, mid, arguments|
|
251
250
|
target << target.length
|
252
251
|
end
|
253
252
|
end
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: proxeze
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 1.1.
|
5
|
+
version: 1.1.1
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Jason Rogers
|
@@ -192,7 +192,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
192
192
|
requirements:
|
193
193
|
- - ">="
|
194
194
|
- !ruby/object:Gem::Version
|
195
|
-
hash:
|
195
|
+
hash: -2385236588266356416
|
196
196
|
segments:
|
197
197
|
- 0
|
198
198
|
version: "0"
|