как использовать 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 от Новичка... это сложно теперь..., но я хочу использовать код для реальной цели...

спасибо!!!

11
задан mikej 3 June 2010 в 20:53
поделиться

1 ответ

Обратите внимание, что 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 , чтобы разрешить другим процессам на вашем компьютере доступ к файлу, но, поскольку мы использовали здесь нотацию блока, файл автоматически закрывается в конце блока. .

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

22
ответ дан 3 December 2019 в 05:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: