Module: Casting
- Defined in:
- lib/casting.rb,
lib/casting/version.rb
Defined Under Namespace
Modules: Client, MissingMethodClient Classes: Delegation, InvalidAttendant, MissingAttendant, PreparedDelegation
Constant Summary collapse
- VERSION =
'0.4.0'
Class Method Summary collapse
Class Method Details
.delegating(assignments) ⇒ Object
5 6 7 8 9 10 11 12 13 14 15 16 |
# File 'lib/casting.rb', line 5 def self.delegating(assignments) assignments.each do |object, mod| object.send(:instance_variable_set, :@__previous_delegate__, object.instance_variable_get(:@__current_delegate__)) object.send(:instance_variable_set, :@__current_delegate__, mod) end yield ensure assignments.each do |object, mod| object.send(:instance_variable_set, :@__current_delegate__, object.instance_variable_get(:@__previous_delegate__)) object.send(:remove_instance_variable, :@__previous_delegate__) end end |