2016-08-08 14 views
0

Ich habe eine Datei, in der ich einige Daten speichern möchte.Ruby: Zeile in Datei hinzufügen

Mit IRB kann ich verschiedene Zeilen in der Datei hinzufügen. Bei Verwendung eines in einer Datei geschriebenen Ruby-Skripts treten jedoch Probleme auf.

Ich kann eine Zeile schreiben, sie wird so gespeichert, wie es sein sollte, aber wenn ich das Skript starte und die Methode erneut verwende, überschreibt es, was in der Datei war, anstatt Inhalte in der nächsten Zeile hinzuzufügen.

def create_new_account 
    puts "Set the account's name" 
    @account_name = gets 
    puts "New account's name: #{@account_name} 
    open("accounts.txt","w+") do |account_file| 
     account_file.write "ac;#{@account_name}\n" 

    end 
end 

hatte ich einen Blick auf die verschiedenen Parameter des Verfahrens open, aber wie es scheint, nicht da ist. Darüber hinaus habe ich versucht puts anstelle von write, aber es gibt keinen Unterschied, immer das gleiche Problem.

Könnte jemand mir helfen zu verstehen, was mit dem Code falsch ist?

Dank

+0

http://StackOverflow.com/Questions/3682359/What-are-the-Ruby-File-Open-Modes-and-Options aber wie gesagt müssen Sie anhängen – Doon

Antwort

0

Versuchen Sie die Datei in append mode wie so

open('accounts.txt', 'a+') 

sonst wird die Datei geöffnet wird, öffnen, um die vorhandenen Daten zu überschreiben.

"a" - Schreibgeschützt, jeder Schreibaufruf fügt Daten am Ende der Datei an. Erstellt eine neue Datei zum Schreiben, wenn die Datei nicht existiert.