Я получил следующий пример:
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 от Новичка... это сложно теперь..., но я хочу использовать код для реальной цели...
спасибо!!!
Обратите внимание, что 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
, чтобы разрешить другим процессам на вашем компьютере доступ к файлу, но, поскольку мы использовали здесь нотацию блока, файл автоматически закрывается в конце блока. .
Код не проверен - дайте мне знать, если вы получите сообщение об ошибке. Удачи вам в программировании!