2010-06-03 70 views
9

後使用ERB輸出文件,我得到了下面的例子:如何結合

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) 

伴隨

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


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

hi, my name is <%= myname %> 

} 

好聽打印到屏幕。

什麼是最簡單的方式輸出到另一個文件:「text2.txt」,而不是屏幕?

我知道這對你們大多數有經驗的ruby大師來說真的是小菜一碟,但對於剛剛從新手拿起Ruby的初學者來說......現在很具挑戰性......但我想使用代碼真實的生活目的...

謝謝!!!

回答

20

請注意ERB不打印這個 - 你是。

print erb.result(binding) 

讓我們改變這一點。我們將打開文件句柄,以w模式寫入,並將ERB結果寫入文件。

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

File.open('text2.txt', 'w')打開在w儀式模式文件text2.txt,並將該文件對象成塊。 f.write將其參數輸出到文件。在某些情況下,您可能需要撥打f.close以允許您的計算機上的其他進程訪問該文件,但由於我們在此使用了塊符號,因此文件在塊的結尾處自動關閉。

代碼未經測試 - 讓我知道如果你得到一個錯誤。祝你的編程旅程順利!

+0

那真的很好,詳細的解釋!謝謝! – john 2010-06-03 20:45:02