sto usando questo trucco rubino con __END__
e DATA
di mettere alcuni dati all'interno del mio file di programma:Rubino portata dei dati dopo __END__
class Foo
def initialize()
puts DATA.read.inspect
end
end
puts DATA.read.inspect
Foo.new
__END__
test
Questo genera il seguente output:
"test"
""
I aveva assunto DATA
sarebbe lo stesso a livello globale, ma all'interno della classe non ha contenuto. Come potrei accedere ai dati dopo __END__
all'interno di una classe (a parte la soluzione ovvia e brutta che utilizza le variabili globali)?
AGGIUNTO: Vedo come la lettura di DATA
due volte non mi dia nulla la seconda volta. Potrei usare rewind
per tornare all'inizio, ma read
quindi mi fornisce l'intero codice sorgente del mio programma. C'è un modo più semplice per ottenere la parte dopo __END__
per gli usi successivi di DATA
, o sarebbe meglio leggerlo una volta e archiviarlo da qualche altra parte per un uso futuro?
Fare 'FOO = DATA.read' perderà i vantaggi di un oggetto' IO' enumerabile. 'FOO = StringIO.new (DATA.read, 'r')' può essere preferibile? (È necessario 'require' stringio'' prima) – AlvaPan