Created
December 13, 2012 05:07
-
-
Save anonymous/4274181 to your computer and use it in GitHub Desktop.
Revisions
-
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,42 @@ class Controller attr_reader :tag def initialize @tag = "Controller" @window = Window.new(self) @window.show hello hello_again end end class Window attr_reader :tag def initialize(controller) @controller = controller end def show @tag = "World" @controller.instance_eval do def hello puts "Hello #{tag}!" # => Hello Controller! end end # Find controller's instance variable that is current self. window = @controller.instance_variables.find { |var| @controller.instance_variable_get(var) == self } # Now we can use the outer self within the instance_eval. @controller.instance_eval(%Q/ def hello_again tag = #{window}.tag puts "Hello #{tag}!" # => Hello World! end /) end end Controller.new