Bug #16242
Updated by osyo (manga osyo) about 6 years ago
Refinements method call to failed with `prepend`. 
 ## No problem 
 ```ruby 
 module M 
   # Methods that you want to call only within this context 
   refine M do 
     def refine_method 
       "refine_method" 
     end 
   end 
   using M 
   def hoge 
     # OK: `refine_method` calls the method 
     refine_method 
   end 
 end 
 class X 
   include M 
 end 
 pp X.new.hoge 
 # => "refine_method" 
 ``` 
 ## Problem No problem 
 * If `prepend` another module, the search for `refine_method` fails 
 ```ruby 
 module OtherM 
 end 
 module M 
   # Added prepend 
   prepend OtherM 
   refine M do 
     def refine_method 
       "refine_method" 
     end 
   end 
   using M 
   def hoge 
     # Error: `hoge': undefined local variable or method `refine_method' for #<X:0x00007fa05a024390> (NameError) 
     refine_method 
   end 
 end 
 class X 
   include M 
 end 
 # Error 
 pp X.new.hoge 
 ``` 
 ## Environment 
 Reproduced in the following environment. 
 ```ruby 
 RUBY_VERSION    # => "2.7.0" 
 RUBY_REVISION # => "02dfa0f16361c498e0f529054b00e3e09730892b" 
 RUBY_PLATFORM # => "x86_64-darwin17" 
 ``` 
 You can also confirm that it is reproduced here. 
 https://wandbox.org/permlink/I6tQesDRntT7JZqB