używam tej sztuczki Ruby z __END__
i DATA
umieścić niektóre dane w moim pliku programu:Ruby zakres danych po __END__
class Foo
def initialize()
puts DATA.read.inspect
end
end
puts DATA.read.inspect
Foo.new
__END__
test
To generuje następujący wynik:
"test"
""
I założył, że DATA
będzie taki sam na całym świecie, ale w klasie nie ma treści. Jak uzyskać dostęp do danych po __END__
w klasie (oprócz oczywistego i brzydkiego rozwiązania wykorzystującego zmienne globalne)?
DODANO: Widzę, że dwukrotne czytanie mnie dwukrotnie nie daje mi nic. Mogę użyć numeru rewind
, aby wrócić do początku, ale read
daje mi wtedy cały kod źródłowy mojego programu. Czy istnieje łatwiejszy sposób, aby uzyskać dostęp do części po __END__
w następnych użyciach DATA
, czy lepiej byłoby ją przeczytać raz i przechowywać w innym miejscu do wykorzystania w przyszłości?
Wykonanie 'FOO = DATA.read' utraci zalety przeliczalnego obiektu' IO'. "FOO = StringIO.new (DATA.read," r ")" może być lepsze? (Najpierw "wymagaj" ciągi ") – AlvaPan