2010-06-04 13 views
1

J'utilise PHP pour générer des fichiers de certains format spécial, et je l'ai décidé d'essayer la même chose avec Ruby. Pour faire un fichier avec PHP, j'utilise le code suivant:Génération de fichiers formatés avec Ruby dans la manière dont il peut être fait avec 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()) ?> 

Est-il possible de faire avec Ruby? Comment ferais-tu ceci?


Mise à jour

Le code suivant est équivalent au PHP un:

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) 

est-il un moyen de faire ruby file.erb >> output.fmt?


Update2

la distribution standard Ruby a erb processeur

/usr/bin/erb my_formatted_file.erb 
+0

Pouvez-vous rendre votre exemple plus concret? D'où viennent vos données? À quoi ressemblerait un exemple de fichier de sortie? Ruby peut être assez élégant pour ce type de travail, mais sans beaucoup plus de détails, il est assez difficile de trouver comment aider. – glenatron

+0

Supposons que je génère un fichier texte. Il est utilisé par un autre programme sachant qui ne va pas vraiment aider. Le problème auquel je suis confronté est la mise en mémoire tampon en sortie de la façon dont PHP permet de faire. Je vais essayer ERB pour cette tâche. – Andrei

Répondre

1

Il y a plusieurs façons de le faire, mais est probablement erb le plus commun. Cela vous permet de fournir un modèle, puis incorporez commande ruby ​​au sein <%%> symboles. De la même manière que vous le faites avec PHP. C'est ainsi que la plupart des applications Ruby-On-Rails affichent leurs vues.

Il y a un bref examen de 19 différents moteurs de matriçage rubis (dont certains sont XML/HTML spécifique) disponible here

+0

ERB ressemble à une bonne solution. Existe-t-il un moyen d'analyser le fichier ERB sans 'require 'erb'; out = ERB.new << ... '? De préférence via la console (quelque chose comme 'ruby -erb file.erb')? Mon format utilise également '%' pour les commentaires et je ne peux pas changer cela. Est-il possible de désactiver le% -rule? En ce qui concerne – Andrei

+0

%, il semble qu'il est désactivé par défaut et on peut l'activer en ERB.new (modèle, 0, ** « * » **) – Andrei

+1

rubis a un drapeau -r pour exiger une bibliothèque avant d'exécuter le script –