2011-02-15 15 views
27

Estoy tratando de obtener un archivo .rb para crear otro archivo .rb dentro de un directorio específico con contenido específico, cuando se ejecuta ese archivo. No sé si la mejor manera de hacerlo sería con un archivo Ruby o un archivo Rake. Tu entrada sería genial.¿Abrir archivo, escribir y guardar?

Respuesta

12

Esta resultó ser la mejor solución.

File.open("linecount.txt",'w') do |filea| 
    File.open("testfile.txt",'r') do |fileb| 
    while line = fileb.gets 
     filea.puts line.length 
    end 
    end 
end 
+1

Dentro de un proyecto de rieles: ¿dónde colocaría el archivo linecount.txt? – Salman

+0

¿Dónde debería escribir este código? tengo el mismo requisito pero no sé dónde debería escribir este código y ejecutar esto –

22
directory = "../../directory" 
File.open(File.join(directory, 'file.rb'), 'w') do |f| 
    f.puts "contents" 
end 
+0

Gracias Dogbert - si tuviera contenido más complejo, como algunos métodos con constantes que pueden colocarse dentro de una cadena, ¿cómo lo haría? – CharlesJHardy

+0

¿En qué formato tienes el contenido? ¿Cómo está obteniendo/generando el contenido? – Dogbert

+0

donde debo escribir este código? –

39

Si solo necesita realizar un script simple como crear un archivo, puede simplemente usar un script de Ruby sin crear una tarea de rake.

# file origin.rb 
target = "target.rb" 
content = <<-RUBY 
    puts "I'm the target!" 
RUBY 

File.open(target, "w+") do |f| 
    f.write(content) 
end 

Y se puede ejecutar el archivo con

$ ruby origin.rb 
+0

Creo que también puede usar puts en lugar de write – JohnMerlino

Cuestiones relacionadas