Bug #1982

Kernel.load(..., true) --> scope problem

Added by johan556 (Johan Holmberg) about 11 years ago. Updated over 9 years ago.

Target version:
ruby -v:
ruby 1.9.2dev (2009-07-18 trunk 24186)


In a file loaded with "Kernel.load(..., true)", the way constants are looked up has changed since 1.8. The attached script "helloworld.rb" works in Ruby 1.8, but fails in Ruby 1.9. It should be invoked like below to provoke the error:

 $ ruby1.9 -e 'load "helloworld.rb", true'

The error I get is:

helloworld.rb:8:in say': uninitialized constant #<Module:0x2c9764>::HelloWorld::Hello (NameError)
from helloworld.rb:12:in
from -e:1:in load'
from -e:1:in

The behaviour of 1.9 seems like a bug to me. It makes it almost impossible to write code in a file loaded this way (with the "true" parameter to "Kernel.load").

( see also my previous mail about this in [ruby-core:22033] )


helloworld.rb (348 Bytes) helloworld.rb johan556 (Johan Holmberg), 08/23/2009 05:32 AM

Related issues

Related to Ruby master - Bug #616: instance_eval and Module#to_sClosedko1 (Koichi Sasada)10/06/200801/20/2009Actions

Updated by yugui (Yuki Sonoda) about 11 years ago

  • Assignee set to matz (Yukihiro Matsumoto)
  • Target version set to 1.9.2

Updated by yugui (Yuki Sonoda) about 11 years ago

  • Status changed from Open to Assigned
  • Priority changed from Normal to 5

Updated by mame (Yusuke Endoh) over 10 years ago

  • Status changed from Assigned to Closed
  • % Done changed from 0 to 100

This issue was solved with changeset r27514.
Johan, thank you for reporting this issue.
Your contribution to Ruby is greatly appreciated.
May Ruby be with you.

Also available in: Atom PDF