Я использую этот трюк Ruby с __END__ и DATA, чтобы поместить некоторые данные в файл моей программы:
class Foo
def initialize()
puts DATA.read.inspect
end
end
puts DATA.read.inspect
Foo.new
__END__
test
Это генерирует следующий вывод:
"test"
""
Я предположил, что DATA будет одним и тем же глобально, но внутри класса он не имеет содержимого. Как получить доступ к данным после __END__ внутри класса (помимо очевидного и уродливого решения с использованием глобальных переменных)?
ADDED: Я вижу, как чтение DATA дважды не дает мне ничего второго. Я мог бы использовать rewind, чтобы вернуться к началу, но read затем дает мне весь исходный код моей программы. Есть ли более простой способ получить только часть после __END__ при последующем использовании DATA, или я бы лучше прочитал ее один раз и сохранил ее где-то еще для будущего использования?