Class: Sunspot::Util::ContextBoundDelegate
- Inherits:
-
Object
- Object
- Sunspot::Util::ContextBoundDelegate
- Defined in:
- sunspot/lib/sunspot/util.rb
Constant Summary
- BASIC_METHODS =
Set[:==, :equal?, :!", :!=", :instance_eval, :object_id, :__send__, :__id__]
Class Method Summary (collapse)
Instance Method Summary (collapse)
- - (Object) __proxy_method__(method, *args, &block)
- - (Object) id
-
- (ContextBoundDelegate) initialize(receiver, calling_context)
constructor
A new instance of ContextBoundDelegate.
- - (Object) method_missing(method, *args, &block)
-
- (Object) sub(*args, &block)
Special case due to `Kernel#sub`’s existence.
Constructor Details
- (ContextBoundDelegate) initialize(receiver, calling_context)
A new instance of ContextBoundDelegate
222 223 224 |
# File 'sunspot/lib/sunspot/util.rb', line 222 def initialize(receiver, calling_context) @__receiver__, @__calling_context__ = receiver, calling_context end |
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
- (Object) method_missing(method, *args, &block)
235 236 237 |
# File 'sunspot/lib/sunspot/util.rb', line 235 def method_missing(method, *args, &block) __proxy_method__(method, *args, &block) end |
Class Method Details
+ (Object) instance_eval_with_context(receiver, &block)
203 204 205 206 207 208 209 |
# File 'sunspot/lib/sunspot/util.rb', line 203 def instance_eval_with_context(receiver, &block) calling_context = eval('self', block.binding) if parent_calling_context = calling_context.instance_eval{@__calling_context__} calling_context = parent_calling_context end new(receiver, calling_context).instance_eval(&block) end |
Instance Method Details
- (Object) __proxy_method__(method, *args, &block)
239 240 241 242 243 244 245 246 247 248 249 |
# File 'sunspot/lib/sunspot/util.rb', line 239 def __proxy_method__(method, *args, &block) begin @__receiver__.__send__(method.to_sym, *args, &block) rescue ::NoMethodError => e begin @__calling_context__.__send__(method.to_sym, *args, &block) rescue ::NoMethodError raise(e) end end end |
- (Object) id
226 227 228 |
# File 'sunspot/lib/sunspot/util.rb', line 226 def id @__calling_context__.__send__(:id) end |
- (Object) sub(*args, &block)
Special case due to `Kernel#sub`’s existence
231 232 233 |
# File 'sunspot/lib/sunspot/util.rb', line 231 def sub(*args, &block) __proxy_method__(:sub, *args, &block) end |