Project

General

Profile

Actions

Bug #13204

closed

Search order of constant is different

Added by okkez (okkez _) over 7 years ago. Updated over 7 years ago.

Status:
Closed
Assignee:
-
Target version:
-
[ruby-dev:49979]

Description

class CleanRoom < BasicObject
  def call
    instance_eval(<<-CODE)
    $stdout.puts ::ENV.size
    CODE
  end

  def call2
    instance_eval(<<-CODE)
    $stdout.puts ENV.size
    CODE
  end

  def call3
    instance_eval { $stdout.puts ::ENV.size }
  end
end

class CleanRoom2
  def call
    instance_eval(<<-CODE)
    $stdout.puts ENV.size
    CODE
  end
end

CleanRoom.new.call # => 80 (in my environment)
CleanRoom2.new.call # => 80
CleanRoom.new.call3 # => 80
CleanRoom.new.call2 # => t.rb:14:in `instance_eval': uninitialized constant #<Class:#<CleanRoom:0x0055698d201da8>>::ENV (NameError)

CleanRoom instance cannot refer constants defined in top level.
Is this intentional?

Actions

Also available in: Atom PDF

Like0
Like0Like0