File tree Expand file tree Collapse file tree 2 files changed +23
-0
lines changed Expand file tree Collapse file tree 2 files changed +23
-0
lines changed Original file line number Diff line number Diff line change @@ -40,6 +40,7 @@ def initialize
4040 require 'irb/completion'
4141 IRB . setup ( nil )
4242 @main = TOPLEVEL_BINDING . eval ( "self" ) . dup
43+ init_main_object ( @main )
4344 @workspace = IRB ::WorkSpace . new ( @main )
4445 @irb = IRB ::Irb . new ( @workspace )
4546 @eval_path = @irb . context . irb_path
@@ -58,6 +59,16 @@ def eval(code, store_history)
5859 def complete ( code )
5960 IRB ::InputCompletor ::CompletionProc . call ( code )
6061 end
62+
63+ private
64+
65+ def init_main_object ( main )
66+ wrapper_module = Module . new
67+ main . extend ( wrapper_module )
68+ main . define_singleton_method ( :include ) do |mod |
69+ wrapper_module . include ( mod )
70+ end
71+ end
6172 end
6273
6374 class PryBackend
Original file line number Diff line number Diff line change @@ -8,6 +8,12 @@ def test_eval_one_plus_two
88 assert_equal 3 , @plainbackend . eval ( '1+2' , false )
99 end
1010
11+ def test_include_module
12+ assert_nothing_raised do
13+ @plainbackend . eval ( "include Math" , false )
14+ end
15+ end
16+
1117 def test_complete_req
1218 assert_includes @plainbackend . complete ( 'req' ) , 'require'
1319 end
@@ -26,6 +32,12 @@ def test_eval_one_plus_two
2632 assert_equal 3 , @prybackend . eval ( '1+2' , false )
2733 end
2834
35+ def test_include_module
36+ assert_nothing_raised do
37+ @prybackend . eval ( "include Math" , false )
38+ end
39+ end
40+
2941 def test_complete_req
3042 assert_includes @prybackend . complete ( 'req' ) , 'require'
3143 end
You can’t perform that action at this time.
0 commit comments