2010-06-03 8 views
9

ho ottenuto il seguente esempio:come utilizzare erb per file di output dopo vincolante

require 'erb' 

names = [] 
names.push({ 'first' => "Jack", 'last' => "Herrington" }) 
names.push({ 'first' => "LoriLi", 'last' => "Herrington" }) 
names.push({ 'first' => "Megan", 'last' => "Herrington" }) 

myname = "John Smith" 

File.open(ARGV[0]) { |fh| 

erb = ERB.new(fh.read) 
print erb.result(binding) 

accompagnato da

text.txt 
<% name = "Jack" %> 
Hello <%= name %> 


<% names.each { |name| %> 
Hello <%= name[ 'first' ] %> <%= name[ 'last' ] %> 
<% } %> 

hi, my name is <%= myname %> 

} 

la stampa bene a schermo.

qual è il modo più semplice per stampare su un altro file: "text2.txt" anziché sullo schermo?

So che questo è davvero un pezzo di torta per la maggior parte di voi esperti maestri di rubino, ma per me che ho appena preso un Rubino principiante da novizio ... è impegnativo ora ... ma voglio usare il codice per vero scopo della vita ...

grazie !!!

risposta

20

Nota che ERB non sta stampando questo - lo sei.

print erb.result(binding) 

Cambiamo. Apriremo l'handle del file, nella modalità w, per scrivere e scrivere il risultato ERB nel file.

File.open('text2.txt', 'w') do |f| 
    f.write erb.result(binding) 
end 

File.open('text2.txt', 'w') apre il file in text2.txtw modalità di rito, e passa che oggetto file nel blocco. f.write restituisce il proprio argomento al file. In alcuni casi potrebbe essere necessario chiamare f.close per consentire ad altri processi sul tuo computer di accedere al file, ma poiché abbiamo usato la notazione di blocco qui, invece, il file viene chiuso automaticamente alla fine del blocco.

Codice non verificato - fammi sapere se si verifica un errore. Buona fortuna per il tuo viaggio di programmazione!

+0

che è davvero bella, spiegazione dettagliata! grazie! – john

Problemi correlati