Ruby-Umfang von DATA nach __END__

Ich benutze diesen Ruby-Trick mit__END__ undDATA um einige daten in meine programmdatei zu schreiben:

class Foo
  def initialize()
    puts DATA.read.inspect
  end
end
puts DATA.read.inspect
Foo.new
__END__
test

Dies erzeugt die folgende Ausgabe:

"test"
""

Ich hatte angenommenDATA würde global gleich sein, aber innerhalb der Klasse hat es keinen Inhalt. Wie würde ich danach Zugang zu den Daten bekommen?__END__ innerhalb einer Klasse (abgesehen von der offensichtlichen und hässlichen Lösung mit globalen Variablen)?

HINZUGEFÜGT: Ich sehe wie lesendDATA zweimal gibt mir das zweite mal nichts. ich könnte benutzenrewind um wieder an den start zu kommen, aberread dann gibt mir den gesamten quellcode meines programms. Gibt es einen einfacheren Weg, um genau zum nächsten Teil zu gelangen?__END__ bei späteren Verwendungen vonDATA, oder ist es besser, wenn ich es einmal lese und für die spätere Verwendung an einem anderen Ort aufbewahre?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage