как использовать Erb для вывода файла после привязки - PullRequest
10 голосов
/ 04 июня 2010

Я получил следующий пример:

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» вместо экрана?

Я знаю, что для большинства из вас, опытных мастеров по рубину, это очень просто, но для меня, который только что выбрал Beginning Ruby от Novice ... сейчас это сложно ... но я хочу использовать код по-настоящему цель жизни ...

спасибо !!!

1 Ответ

21 голосов
/ 04 июня 2010

Обратите внимание, что 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') открывает файл text2.txt в режиме w обряда и передает этот объект файла в блок. f.write выводит свой аргумент в файл. В некоторых случаях вам может потребоваться вызвать f.close, чтобы позволить другим процессам на вашем компьютере получить доступ к файлу, но, поскольку вместо этого мы использовали здесь обозначение блока, файл закрывается автоматически в конце блока.

Код не проверен - сообщите мне, если вы получили ошибку. Удачи в вашем путешествии по кодированию!

...