Я использую этот трюк 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
, или я бы лучше прочитал ее один раз и сохранил ее где-то еще для будущего использования?