Sie möchten den Benutzernamen in einer Datei im lokalen Dateisystem speichern. Ruby bietet viele Möglichkeiten, dies zu tun, und wir werden eine in dieser Antwort untersuchen: YAML-Dateien.
YAML-Dateien sind eine strukturierte Speicherdatei, die alle Arten von unterschiedlichen Daten speichern kann, und ist ein guter Ort, um Konfigurationsdaten zu speichern. Tatsächlich sind YAML-Konfigurationsdateien Schlüsselelemente der größten bestehenden Ruby-Projekte. YAML gibt Ihnen einen guten Ausgangspunkt, um zukünftige Konfigurationsanforderungen zu unterstützen, die über die aktuelle hinausgehen. Dies ist eine großartige Möglichkeit, die Feature-Entwicklung zu planen.
Also, wie funktioniert es? Lassen Sie uns einen Blick auf Ihre Anforderung finden YAML config:
require 'yaml'
config_filename = "config.yml"
config = {}
name = nil
if file_exists(config_filename)
begin
config = YAML.load_file(config_filename)
name = config["name"]
rescue ArgumentError => e
puts "Unable to parse the YAML config file."
puts "Would you like to proceed?"
proceed = gets.chomp
# Allow the user to type things like "N", "n", "No", "nay", "nyet", etc to abort
if proceed.length > 0 && proceed[0].upcase == "N"
abort "User chose not to proceed. Aborting!"
end
end
end
if name.nil? || (name.strip.length == 0)
print "Enter your name (you will only need to do this once): "
name = gets.chomp
# Store the name in the config (in memory)
config["name"] = name
# Convert config hash to a YAML config string
yaml_string = config.to_yaml
# Save the YAML config string to the config file
File.open(config_filename, "w") do |out|
YAML.dump(config, out)
end
end
Rather Sie als zeigen das Nötigste Ihren Bedürfnissen gerecht zu werden, enthält dieser Code ein wenig Fehlerbehandlung und einige einfache Sicherheitsüberprüfungen auf der Konfigurationsdatei. Es ist möglicherweise robust genug für Sie sofort zu verwenden.
Das allererste Bit erfordert nur die YAML-Standardbibliothek. Dadurch funktionieren die YAML-Funktionen in Ihrem Programm. Wenn Sie eine Loader-Datei oder einen anderen üblichen Mechanismus haben, legen Sie einfach die require 'yaml'
dort.
Danach initialisieren wir einige Variablen, die in diesem Prozess verwendet werden. Sie sollten beachten, dass die config_filename
keine Pfadinformationen enthält, so dass es aus dem aktuellen Verzeichnis gelesen wird. Wahrscheinlich möchten Sie die Konfigurationsdatei an einem gemeinsamen Ort speichern, z. B. in ~/.my-program-name/config.yml
oder C:\Documents and Settings\MyUserName\Application Data\MyProgramName\
. Dies kann ziemlich einfach gemacht werden, und es gibt viel zu helfen, wie diese Location to Put User Config Files in Windows und Location of ini/config files in linux/unix.
Als nächstes prüfen wir, ob die Datei tatsächlich existiert, und wenn ja, versuchen wir, den YAML-Inhalt daraus zu lesen. Die Methode YAML.load_file()
behandelt alle schweren Lasten hier, also müssen Sie nur den Config-Hash fragen, der für den Schlüssel zurückgegeben wird, an dem Sie interessiert sind, in diesem Fall der Schlüssel "name"
.
Wenn beim Lesen der YAML-Datei ein Fehler auftritt, deutet dies darauf hin, dass die Datei möglicherweise beschädigt ist. Daher versuchen wir, damit umzugehen. YAML-Dateien lassen sich leicht von Hand bearbeiten, aber wenn Sie das tun, können Sie auch leicht einen Fehler einführen, der das Laden der YAML-Datei zum Scheitern bringt. Der Fehlerbehandlungscode ermöglicht es dem Benutzer, das Programm abzubrechen und die YAML-Datei wiederherzustellen, so dass sie nicht einfach überschrieben wird.
Danach versuchen wir zu sehen, ob wir einen gültigen Namen von der YAML-Konfig hatten, und wenn nicht, wir gehen voran und akzeptieren es vom Benutzer. Nachdem sie einen Namen eingegeben haben, fügen wir sie zum Konfigurationshash hinzu, konvertieren den Hash in eine YAML-formatierte Zeichenfolge und schreiben diese Zeichenfolge dann in die Konfigurationsdatei.
Und das ist alles, was es braucht. Alles, was Sie in einem Ruby-Hash speichern können, können Sie in einer YAML-Datei speichern. Das ist eine Menge Energie zum Speichern von Konfigurationsinformationen. Wenn Sie später weitere Konfigurationsoptionen hinzufügen müssen, verfügen Sie über einen vielseitigen Container, den Sie genau für diesen Zweck verwenden können.
Wenn Sie weiter lesen auf YAML tun möchten, können Sie einige gute Informationen finden Sie hier:
Während einige dieser Artikel sind ein bisschen älter, sie sind immer noch sehr relevant und geben Ihnen einen Sprungpunkt für weitere Lektüre. Genießen!
Ihre Frage ist verfrüht. Was hast du probiert? Warum hat es nicht funktioniert? Wenn Sie es nicht versucht haben, warum nicht? Ihr Beispiel zeigt keinen Versuch, und das müssen wir sehen. Bitte lesen Sie "[ask]" einschließlich der Links auf dieser Seite und "[mcve]". Wie auch immer, du fragst nach einem Tutorial, aber wir haben keine Ahnung, was dein Fachwissen ist, also müssen wir von ganz unten beginnen und uns aufarbeiten, was nicht zum Thema gehört. Mehrere Benutzer/Zeiten? Aus verschiedenen Systemen? Von einem System? Browser verwenden? Von der Befehlszeile? Es gibt viele fehlende Informationen. –
@theTinMan Wie ist das? – 13aal
Es ist eine Verbesserung. Sind die Informationen, die gespeichert werden, nur für die Person nützlich, die auf dieser Maschine gespeichert ist, oder ist sie für alle Benutzer auf allen Maschinen nützlich? Der Grund dafür ist, dass das Speichern einer Datei nur für eine Person auf einem bestimmten Computer von Vorteil ist. Wenn Sie die Informationen teilen müssen, müssen Sie ein gemeinsames Datenrepository verwenden, normalerweise eine Datenbank. –