Ich habe mit Ruby eine Edelsteinbibliothek um die Einstellungsdatei erstellt. Diese Bibliothek unterstützt:
Ich hatte viel Dunst in der Einstellungsdatei und wollte eine Bibliothek, die alles auf einmal lösen kann. Der Inhalt des Dunstes ist nur die Kehrseite der obigen Unterstützung, aber ich möchte die Einstellungen nicht in Klartext in eine Textdatei schreiben. Ich möchte nicht verschiedene Einstellungselemente für Produktion, Entwicklung usw. und alle gängigen Einstellungselemente in dieselbe Datei schreiben. Wir haben solche Gedanken als Ausgangspunkt geschaffen.
~~ Diese Bibliothek wurde nicht vollständig getestet, daher sind die Spezifikationen und die Zuverlässigkeit nicht erschöpft. Wenn Sie eine bessere Bibliothek haben, teilen Sie uns dies bitte in den Kommentaren mit. ,,, ~~ Gefun Gefun. Von nun an werde ich Unzufriedenheiten und Fehler finden und sie langsam und langsam für mich selbst aktualisieren. (Vielleicht)
Angenommen, Sie haben die folgende Konfigurationsdatei.
project_config.yml
---
- :key_path: "/home/vagrant/.crypt_config/project_key.yml"
- :animal:
:value: |-
?0thjXJj2wR4kzp3EidmJ+bgWtYXs7/DZpTlcDFiLjDbsSB2YWnZEB+ovMTNC
37kx
:desc: ''
:fruit:
:value: |-
?wIGrSC/bf5om/rlfIlz7hAIOjaZFjIgw4ulguIKI7YpBrx4JOcmUo3cLH1vC
eDeW
:desc: This fruit color is yellow.
Wenn Sie dies im Programm verwenden, können Sie es wie folgt verwenden.
require 'dinomischus'
# ex1
hash = Dinomischus.load_file('config_project.yml')
# => {:animal=>"owl",
# :fruit=>"Lemon"}
p hash[:animal] # => owl
p hash[:fruit] # => Lemon
Wenn Sie auch das Beschreibungselement (desc) erhalten möchten, fügen Sie dem Argument `` `true``` hinzu.
# ex2
hash = Dinomischus.load_file('project_config.yml', true)
# => {:animal=>{:value=>"owl", :desc=>""},
# :fruit=>{:value=>"Lemon", :desc=>"This fruit color is yellow."} }
p hash[:fruit][:value] # => Lemon
p hash[:fruit][:desc] # => This fruit color is yellow.
Selbst wenn mehrere Einstellungsdateien vorhanden sind, können diese gleichzeitig gelesen werden. In diesem Fall ist eine separate Datei erforderlich, die die Lesereihenfolge definiert. (Project_config_index.yml im Beispiel) Wenn die Einstellungselemente dupliziert werden, erhält der Einstellungswert der später gelesenen Datei Priorität. Auf diese Weise ist es möglich, eine Einstellungsdatei für den Standardwert vorzubereiten und die Einstellungsdatei für die Entwicklungsumgebung und die Einstellungsdatei für die Produktionsumgebung zu trennen.
project_config_index.yml
---
- :conf_path: "/path/to/config/project_config_default.yml"
- :conf_path: "/path/to/config/project_config_product.yml"
project_config_default.yml
---
- :key_path: "/home/vagrant/.crypt_config/project_key.yml"
- :animal:
:value: |-
?0thjXJj2wR4kzp3EidmJ+bgWtYXs7/DZpTlcDFiLjDbsSB2YWnZEB+ovMTNC
37kx
:desc: ''
:fruit:
:value: |-
?wIGrSC/bf5om/rlfIlz7hAIOjaZFjIgw4ulguIKI7YpBrx4JOcmUo3cLH1vC
eDeW
:desc: This fruit color is yellow.
project_config_product.yml
---
- :key_path: "/home/vagrant/.crypt_config/project_key.yml"
- :fruit:
:value: banana
:desc:Gelbe Frucht
:furniture:
:value: chair
:desc:Dinge, auf denen man sitzen kann
Nach dem Lesen des obigen wird es wie folgt sein.
require 'dinomischus'
hash = Dinomischus.load_file('project_name_config_index.yml')
# => {:animal=>"owl",
# :fruit=>"banana",
# :furniture=>"chair"}
Der Einstellwert von: `Frucht``` wurde in Abhängigkeit von der später gelesenen Datei in`
Banane``` geändert.
Vor allem zum ersten Mal gibt es also verschiedene Regeln Verwenden Sie es, indem Sie ein Menü über einen Shell-Befehl aufrufen.
(Es wird davon ausgegangen, dass die später beschriebene Installation abgeschlossen wurde.)
$ cd /path/to/Projektkonfigurationsverzeichnis(config)Ort
$ dinomischus
****** Welcome Egoistic Config ******
1. Make Template
2. Add or Update Crypted Value
3. List Configs Simple
4. List Configs Specify
c. Clear Screen
h. Ruby Command List
z. End
-----------> Select Menu [1-4,c,h,z]:
Wählen Sie 1, wenn das Menü ↑ angezeigt wird.
-----------> Select Menu [1-4,c,h,z]: 1
****** Make Template ******
Input Your Config Prefix Name : ____
Wenn Sie 1 auswählen, werden Sie nach der ersten Zeichenfolge zur Identifizierung der Einstellungsdatei gefragt. Bitte geben Sie ein beliebiges Zeichen ein. (Hier prj) (Wenn bereits eine Datei mit dem einmal festgelegten Identifikationszeichen vorhanden ist, wird der Dateierstellungsprozess übersprungen.)
Input Your Config Prefix Name : prj
Make File Default Value is ...
Key File Place [/path/to/Home-Verzeichnis/.crypt_config/prj_key.yml]
Config File Place [/path/to/Aktuelles Verzeichnis/config/prj_config.yml]
Define File Place [/path/to/Aktuelles Verzeichnis/config/prj_config_index.yml]
Press Enter Key to Next Step...
Überprüfen Sie die erstellte Datei und drücken Sie die Eingabetaste.
`.crypt_config``` und`
config``` nicht vorhanden sind, erstellen Sie sie.Done!
Next Step is Add Crypt Config|Plain Config to /path/to/Aktuelles Verzeichnis/config/prj_config.yml .
Add Config Value then You Select Menu No.2 .
-----------> Select Menu [1-4,c,h,z]:
Damit ist die Vorlagenerstellung abgeschlossen. Kopieren Sie anschließend die fertige Datei entsprechend oder ändern Sie das Speicherziel, um sie in die gewünschte Konfiguration zu ändern. Wenn Sie das Verzeichnis ändern, wird der Pfad jeder Datei am Anfang der Einstellungsdatei geschrieben. Bitte ändern Sie das auch.
Rufen Sie das Menü wie zuvor über den Befehl `` `dinomischus``` auf.
$ cd /path/to/Projektkonfigurationsverzeichnis(config)Ort
$ dinomischus
****** Welcome Egoistic Config ******
1. Make Template
2. Add or Update Crypted Value
3. List Configs Simple
4. List Configs Specify
c. Clear Screen
h. Ruby Command List
z. End
-----------> Select Menu [1-4,c,h,z]:
Wählen Sie 2, wenn das Menü ↑ angezeigt wird.
-----------> Select Menu [1-4,c,h,z]: 2
****** Crypted Value Setting ******"
Input Your Config Path : config/prj_config.yml
Input Your Key : email
Input Your Value : [email protected]
Input Your Description :Probe einstellen E.-Mail Adresse. Es existiert nicht.
Done!
Nachdem Sie den Pfad der Einstellungsdatei eingegeben haben, den Sie bearbeiten möchten Geben Sie den Wert ein, den Sie für jedes angezeigte Element festlegen möchten. Das ist alles zum Verschlüsseln der Einstellungen. Wenn alles gut geht, sollten Sie eine Konfigurationsdatei wie die folgende haben.
config/prj_config_index.yml
---
- :conf_path: "/home/vagrant/project/config/prj_config.yml"
/path/to/project/config/prj_config.yml
---
- :key_path: "~/.crypt_config/prj_key.yml"
- :dummy:
:value: ''
:desc: ''
:email:
:value: |-
?Afo3Ccn307HZgQgBRwmyUQtCqDus3063wz1h9CIpRMIWdpRC07yfd2TG5jKa
OrQiDDMfySjQIhWfL1Gt0UJ8tngSiUJT4gfgvjN7/+LHpdk=
:desc:Probe einstellen E.-Mail Adresse. Es existiert nicht.
`{: dummy => {: value: '',: desc: ''}}`
, löschen Sie es mit einem Texteditor.yaml:~/.crypt_config/prj_key.yml
---
:key:
:type: sha256
:value: eUIZzgKKnsJCoLcRX5pXXg
Da die Installation in Ruby Gem registriert ist, kann sie per Gem-Installation durchgeführt werden.
$ gem install dinomischus
Definiert die Lesereihenfolge der Konfigurationsdateien.
Der Link zur Schlüsseldatei (key_path) und der Text des Einstellwerts werden gespeichert.
Speichert das zur Verschlüsselung / Entschlüsselung verwendete Passwort.
`type:`
ist ein vorläufiger Punkt für die zukünftige Erweiterung der Spezifikation. Derzeit ist "sha256" eine Option.Es ist verfügbar unter KurokoSin / Dinomischus (Github).
Ubuntu 20.04LTS ruby 2.6.3 ist. Ich mache es für Rubin, nicht für Schienen. Ich wünschte, ich könnte auch auf Schienen fahren. .. .. ..