Project

General

Profile

Bug #19631

Updated by daveola (David Stellar) 12 months ago

 
 I am using module_eval and noticing that since ruby 3.2 the Kernel locations do not have absolute_path for any of the eval code, though the path is available.    This is a regression since at least ruby 3.0 which still works. 

 I am on 3.2.2, and here is some sample code: 

 ``` 
 class `class Script < Module 
   script = %q{ 
     def self.locations 
       Kernel.caller_locations.each { |loc| 
         puts "LOCATION: #{loc}" 
         puts "ABSPATH:    #{loc.absolute_path}" 
         puts "PATH:       #{loc.path}" 
       } 
     end 
     self.locations 
   } 

   module_eval(script, "/this/is/my/path", 0) 
 end 
 ``` ` 

 The output for the code at the top of the caller locations (inside the module_eval) is: 

 ``` 
 LOCATION: `LOCATION: /this/is/my/path:9:in '<class:Script>' `<class:Script>'               
 ABSPATH:                        
 PATH:       /this/is/my/path       ` 

 ``` 
 But the absolute_path should have the correct path data as well

Back