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