Leider ist die DATA
wird gesetzt, wenn das Skript "main" geladen wird. Ein paar Dinge, die helfen könnten:
Sie kann zumindest erhalten A_DATA
korrekt zu sein. Kehren Sie einfach die Reihenfolge der ersten beiden Operationen in a.rb
:
# a.rb
A_DATA = DATA.read
require 'b'
...
Sie können die B_DATA
richtig zu sein, wenn man sich ein wenig anstrengt:
# load_data_regardless_of_main_script.rb
module LoadDataRegardlessOfMainScript
def self.from(file)
# the performance of this function could be
# greatly improved by using a StringIO buffer
# and only appending to it after seeing __END__.
File.read(file).sub(/\A.*\n__END__\n/m, '')
end
end
# b.rb:
require 'load_data_regardless_of_main_script'
B_DATA = LoadDataRegardlessOfMainScript.from(__FILE__)