2010-06-04 4 views
1

Я использую PHP для генерации файлов определенного формата, и я решил попробовать то же самое с Ruby. Чтобы создать файл с PHP, я использую следующий код:Генерация отформатированных файлов с Ruby в том, как это можно сделать с помощью PHP

<? include 'functions_and_settings.php'; ob_start() ?> 

some parts of another format 

<? // php functions generating file content, 
    // including other formatted files ?> 

some parts 

<? file_put_contents('output.fmt', ob_get_clean()) ?> 

Возможно ли это с Ruby? Как бы вы это сделали?


Update

Следующий код эквивалентен PHP один:

require 'erb' 
require 'my_functions_and_settings' 
template = ERB.new <<-EOF 

some text lines of another format 

<% #functions generating content, 
    # inclusion of formatted files %> 

some text lines of another format 

EOF 
File.open("output.fmt", "w") do |f| 
    f.puts template.result(binding) 
end 
# or may be: File.new("file.txt") << template.result(binding) 

Есть ли способ сделать ruby file.erb >> output.fmt?


Update2

распределение Стандартный рубин имеет erb процессор

/usr/bin/erb my_formatted_file.erb 
+0

Можете ли вы сделать ваш пример более конкретно? Откуда берутся ваши данные? Каким будет пример выходного файла? Ruby может быть довольно изящным для этого типа работы, но без более подробной информации довольно сложно разобраться, как помочь. – glenatron

+0

Предположим, что я генерирую текстовый файл. Он используется другой программой, которая не поможет. Проблемой, с которой я столкнулся, является выходная буферизация в том, как это позволяет PHP. Я попробую ERB для этой задачи. – Andrei

ответ

1

Есть несколько способов сделать это, но наиболее распространенным является, вероятно, erb. Это позволяет вам предоставить шаблон, а затем вставить команду ruby ​​в пределах <%%> символов. Точно так же, как и с PHP. Таким образом, большинство приложений Ruby-On-Rails отображают свои представления.

Существует краткий обзор 19 различных рубин шаблонных двигателей (некоторые из которых являются XML/HTML специфические) доступны here

+0

ERB выглядит как хорошее решение. Есть ли способ проанализировать ERB-файл без 'require 'erb'; out = ERB.new << ... '? Предпочтительно через консоль (что-то вроде 'ruby -erb file.erb')? Также мой формат использует '%' для комментариев, и я не могу это изменить. Есть ли способ отключить% -rule? – Andrei

+0

Что касается%, кажется, что он по умолчанию отключен, и его можно включить с помощью ERB.new (template, 0, ** '*' **) – Andrei

+1

ruby ​​имеет флаг -r, требующий библиотеки перед выполнением скрипта –