Skip to content

Instantly share code, notes, and snippets.

@bootstraponline
Last active December 20, 2015 14:39
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save bootstraponline/6148819 to your computer and use it in GitHub Desktop.
Save bootstraponline/6148819 to your computer and use it in GitHub Desktop.
Rewrite block source with instance eval
require 'rubygems'
require 'method_source'
ary = []
class Test
def self.run &block
define_method :run_method do
# https://www.ruby-forum.com/topic/4416134#1117671
eval %(ary << 1; puts 'complete'), block.binding
end
Test.new.run_method
end
end
Test.run do
ary << 1
puts 'complete'
end
ary = []
class Test
def self.run &block
define_method :run_method do
# ary is in scope
self.instance_eval &block
end
Test.new.run_method
end
end
Test.run do
ary << 1
puts 'complete'
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment